Unnamed repository; edit this file 'description' to name the repository.
Add AsMut Borrow BorrowMut to minicore and famous_defs
A4-Tacks 10 months ago
parent 7c3de9d · commit cb000ad
-rw-r--r--crates/ide-db/src/famous_defs.rs12
-rw-r--r--crates/test-utils/src/minicore.rs22
2 files changed, 34 insertions, 0 deletions
diff --git a/crates/ide-db/src/famous_defs.rs b/crates/ide-db/src/famous_defs.rs
index 994150b1ac..8e68738508 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<Trait> {
+ self.find_trait("core:convert:AsMut")
+ }
+
+ pub fn core_borrow_Borrow(&self) -> Option<Trait> {
+ self.find_trait("core:borrow:Borrow")
+ }
+
+ pub fn core_borrow_BorrowMut(&self) -> Option<Trait> {
+ self.find_trait("core:borrow:BorrowMut")
+ }
+
pub fn core_ops_ControlFlow(&self) -> Option<Enum> {
self.find_enum("core:ops:ControlFlow")
}
diff --git a/crates/test-utils/src/minicore.rs b/crates/test-utils/src/minicore.rs
index d48063fb86..7ca443826e 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<T: crate::marker::PointeeSized>: 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<Borrowed: crate::marker::PointeeSized>: crate::marker::PointeeSized {
+ fn borrow(&self) -> &Borrowed;
+ }
+ // endregion:borrow
+
+ // region:borrow_mut
+ pub trait BorrowMut<Borrowed: crate::marker::PointeeSized>: Borrow<Borrowed> {
+ fn borrow_mut(&mut self) -> &mut Borrowed;
+ }
+ // endregion:borrow_mut
+}
+
pub mod mem {
// region:manually_drop
use crate::marker::PointeeSized;