Skip to content

Commit 7ddab22

Browse files
committed
Add AsMut Borrow BorrowMut to minicore and famous_defs
1 parent 638329b commit 7ddab22

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

src/tools/rust-analyzer/crates/ide-db/src/famous_defs.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,18 @@ impl FamousDefs<'_, '_> {
106106
self.find_trait("core:convert:AsRef")
107107
}
108108

109+
pub fn core_convert_AsMut(&self) -> Option<Trait> {
110+
self.find_trait("core:convert:AsMut")
111+
}
112+
113+
pub fn core_borrow_Borrow(&self) -> Option<Trait> {
114+
self.find_trait("core:borrow:Borrow")
115+
}
116+
117+
pub fn core_borrow_BorrowMut(&self) -> Option<Trait> {
118+
self.find_trait("core:borrow:BorrowMut")
119+
}
120+
109121
pub fn core_ops_ControlFlow(&self) -> Option<Enum> {
110122
self.find_enum("core:ops:ControlFlow")
111123
}

src/tools/rust-analyzer/crates/test-utils/src/minicore.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,13 @@
1111
//! add:
1212
//! asm:
1313
//! assert:
14+
//! as_mut: sized
1415
//! as_ref: sized
1516
//! async_fn: fn, tuple, future, copy
1617
//! bool_impl: option, fn
1718
//! builtin_impls:
19+
//! borrow: sized
20+
//! borrow_mut: borrow
1821
//! cell: copy, drop
1922
//! clone: sized
2023
//! coerce_pointee: derive, sized, unsize, coerce_unsized, dispatch_from_dyn
@@ -377,11 +380,30 @@ pub mod convert {
377380
fn as_ref(&self) -> &T;
378381
}
379382
// endregion:as_ref
383+
// region:as_mut
384+
pub trait AsMut<T: crate::marker::PointeeSized>: crate::marker::PointeeSized {
385+
fn as_ref(&mut self) -> &mut T;
386+
}
387+
// endregion:as_mut
380388
// region:infallible
381389
pub enum Infallible {}
382390
// endregion:infallible
383391
}
384392

393+
pub mod borrow {
394+
// region:borrow
395+
pub trait Borrow<Borrowed: crate::marker::PointeeSized>: crate::marker::PointeeSized {
396+
fn borrow(&self) -> &Borrowed;
397+
}
398+
// endregion:borrow
399+
400+
// region:borrow_mut
401+
pub trait BorrowMut<Borrowed: crate::marker::PointeeSized>: Borrow<Borrowed> {
402+
fn borrow_mut(&mut self) -> &mut Borrowed;
403+
}
404+
// endregion:borrow_mut
405+
}
406+
385407
pub mod mem {
386408
// region:manually_drop
387409
use crate::marker::PointeeSized;

0 commit comments

Comments
 (0)