From cb000ad313674ce5438503efff88aa63be52119c Mon Sep 17 00:00:00 2001 From: A4-Tacks Date: Mon, 30 Jun 2025 16:41:11 +0800 Subject: [PATCH 1/3] Add AsMut Borrow BorrowMut to minicore and famous_defs --- crates/ide-db/src/famous_defs.rs | 12 ++++++++++++ crates/test-utils/src/minicore.rs | 22 ++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/crates/ide-db/src/famous_defs.rs b/crates/ide-db/src/famous_defs.rs index 994150b1ac4c..8e687385086f 100644 --- a/crates/ide-db/src/famous_defs.rs +++ b/crates/ide-db/src/famous_defs.rs @@ -106,6 +106,18 @@ impl FamousDefs<'_, '_> { self.find_trait("core:convert:AsRef") } + pub fn core_convert_AsMut(&self) -> Option { + self.find_trait("core:convert:AsMut") + } + + pub fn core_borrow_Borrow(&self) -> Option { + self.find_trait("core:borrow:Borrow") + } + + pub fn core_borrow_BorrowMut(&self) -> Option { + self.find_trait("core:borrow:BorrowMut") + } + pub fn core_ops_ControlFlow(&self) -> Option { self.find_enum("core:ops:ControlFlow") } diff --git a/crates/test-utils/src/minicore.rs b/crates/test-utils/src/minicore.rs index d48063fb86f0..7ca443826e0f 100644 --- a/crates/test-utils/src/minicore.rs +++ b/crates/test-utils/src/minicore.rs @@ -11,10 +11,13 @@ //! add: //! asm: //! assert: +//! as_mut: sized //! as_ref: sized //! async_fn: fn, tuple, future, copy //! bool_impl: option, fn //! builtin_impls: +//! borrow: sized +//! borrow_mut: borrow //! cell: copy, drop //! clone: sized //! coerce_pointee: derive, sized, unsize, coerce_unsized, dispatch_from_dyn @@ -377,11 +380,30 @@ pub mod convert { fn as_ref(&self) -> &T; } // endregion:as_ref + // region:as_mut + pub trait AsMut: crate::marker::PointeeSized { + fn as_ref(&mut self) -> &mut T; + } + // endregion:as_mut // region:infallible pub enum Infallible {} // endregion:infallible } +pub mod borrow { + // region:borrow + pub trait Borrow: crate::marker::PointeeSized { + fn borrow(&self) -> &Borrowed; + } + // endregion:borrow + + // region:borrow_mut + pub trait BorrowMut: Borrow { + fn borrow_mut(&mut self) -> &mut Borrowed; + } + // endregion:borrow_mut +} + pub mod mem { // region:manually_drop use crate::marker::PointeeSized; From edcfa4afa1f1ee13e2ef71d3c6cc7ffae28a7dbf Mon Sep 17 00:00:00 2001 From: A4-Tacks Date: Wed, 2 Jul 2025 21:55:55 +0800 Subject: [PATCH 2/3] Fix AsMut::as_mut name --- crates/test-utils/src/minicore.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/test-utils/src/minicore.rs b/crates/test-utils/src/minicore.rs index 7ca443826e0f..84af7c80683a 100644 --- a/crates/test-utils/src/minicore.rs +++ b/crates/test-utils/src/minicore.rs @@ -382,7 +382,7 @@ pub mod convert { // endregion:as_ref // region:as_mut pub trait AsMut: crate::marker::PointeeSized { - fn as_ref(&mut self) -> &mut T; + fn as_mut(&mut self) -> &mut T; } // endregion:as_mut // region:infallible From 439f2d24cd6f5141cabc3cefce8ab675df9da72c Mon Sep 17 00:00:00 2001 From: A4-Tacks Date: Sat, 5 Jul 2025 21:49:56 +0800 Subject: [PATCH 3/3] Fix Borrow and BorrowMut define from beta std --- crates/test-utils/src/minicore.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/test-utils/src/minicore.rs b/crates/test-utils/src/minicore.rs index 84af7c80683a..14749e84b99a 100644 --- a/crates/test-utils/src/minicore.rs +++ b/crates/test-utils/src/minicore.rs @@ -392,13 +392,13 @@ pub mod convert { pub mod borrow { // region:borrow - pub trait Borrow: crate::marker::PointeeSized { + pub trait Borrow { fn borrow(&self) -> &Borrowed; } // endregion:borrow // region:borrow_mut - pub trait BorrowMut: Borrow { + pub trait BorrowMut: Borrow { fn borrow_mut(&mut self) -> &mut Borrowed; } // endregion:borrow_mut