Merge pull request #20132 from A4-Tacks/asmut-borrow-minicore

Add AsMut, Borrow and BorrowMut to minicore and famous_defs
This commit is contained in:
Lukas Wirth 2025-07-06 08:01:54 +00:00 committed by GitHub
commit eca5905364
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 34 additions and 0 deletions

View file

@ -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")
}

View file

@ -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
@ -380,11 +383,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_mut(&mut self) -> &mut T;
}
// endregion:as_mut
// region:infallible
pub enum Infallible {}
// endregion:infallible
}
pub mod borrow {
// region:borrow
pub trait Borrow<Borrowed: ?Sized> {
fn borrow(&self) -> &Borrowed;
}
// endregion:borrow
// region:borrow_mut
pub trait BorrowMut<Borrowed: ?Sized>: Borrow<Borrowed> {
fn borrow_mut(&mut self) -> &mut Borrowed;
}
// endregion:borrow_mut
}
pub mod mem {
// region:manually_drop
use crate::marker::PointeeSized;