Struct RefMut
struct RefMut<'b, T: ?Sized + 'b> { ... }
A wrapper type for a mutably borrowed value from a RefCell<T>.
See the module-level documentation for more.
Implementations
impl<'b, T: ?Sized> RefMut<'b, T>
fn map<U: ?Sized, F>(orig: RefMut<'b, T>, f: F) -> RefMut<'b, U> where F: FnOnce(&mut T) -> &mut UMakes a new
RefMutfor a component of the borrowed data, e.g., an enum variant.The
RefCellis already mutably borrowed, so this cannot fail.This is an associated function that needs to be used as
RefMut::map(...). A method would interfere with methods of the same name on the contents of aRefCellused throughDeref.Examples
use ; let c = new; assert_eq!;fn filter_map<U: ?Sized, F>(orig: RefMut<'b, T>, f: F) -> Result<RefMut<'b, U>, Self> where F: FnOnce(&mut T) -> Option<&mut U>Makes a new
RefMutfor an optional component of the borrowed data. The original guard is returned as anErr(..)if the closure returnsNone.The
RefCellis already mutably borrowed, so this cannot fail.This is an associated function that needs to be used as
RefMut::filter_map(...). A method would interfere with methods of the same name on the contents of aRefCellused throughDeref.Examples
use ; let c = new; assert_eq!;fn try_map<U: ?Sized, E, impl FnOnce(&mut T) -> Result<&mut U, E>: FnOnce(&mut T) -> Result<&mut U, E>>(orig: RefMut<'b, T>, f: impl FnOnce(&mut T) -> Result<&mut U, E>) -> Result<RefMut<'b, U>, (Self, E)>Tries to makes a new
RefMutfor a component of the borrowed data. On failure, the original guard is returned alongside with the error returned by the closure.The
RefCellis already mutably borrowed, so this cannot fail.This is an associated function that needs to be used as
RefMut::try_map(...). A method would interfere with methods of the same name on the contents of aRefCellused throughDeref.Examples
use ; use ; let c = new; assert_eq!; let c = new; let b1: = c.borrow_mut; let b2: = try_map; let = b2.unwrap_err; assert_eq!; assert_eq!;fn map_split<U: ?Sized, V: ?Sized, F>(orig: RefMut<'b, T>, f: F) -> (RefMut<'b, U>, RefMut<'b, V>) where F: FnOnce(&mut T) -> (&mut U, &mut V)Splits a
RefMutinto multipleRefMuts for different components of the borrowed data.The underlying
RefCellwill remain mutably borrowed until both returnedRefMuts go out of scope.The
RefCellis already mutably borrowed, so this cannot fail.This is an associated function that needs to be used as
RefMut::map_split(...). A method would interfere with methods of the same name on the contents of aRefCellused throughDeref.Examples
use ; let cell = new; let borrow = cell.borrow_mut; let = map_split; assert_eq!; assert_eq!; begin.copy_from_slice; end.copy_from_slice;const fn leak(orig: RefMut<'b, T>) -> &'b mut TConverts into a mutable reference to the underlying data.
The underlying
RefCellcan not be borrowed from again and will always appear already mutably borrowed, making the returned reference the only to the interior.This is an associated function that needs to be used as
RefMut::leak(...). A method would interfere with methods of the same name on the contents of aRefCellused throughDeref.Examples
use ; let cell = new; let value = leak; assert_eq!; *value = 1; assert!;
impl<'b, T> Freeze for RefMut<'b, T>
impl<'b, T> RefUnwindSafe for RefMut<'b, T>
impl<'b, T> Send for RefMut<'b, T>
impl<'b, T> Sync for RefMut<'b, T>
impl<'b, T> Unpin for RefMut<'b, T>
impl<'b, T> UnwindSafe for RefMut<'b, T>
impl<'b, T: ?Sized + Unsize<U>, U: ?Sized> CoerceUnsized for RefMut<'b, T>
impl<'b, T: ?Sized> PinCoerceUnsized for RefMut<'b, T>
impl<P, T> Receiver for RefMut<'b, T>
impl<T> Any for RefMut<'b, T>
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for RefMut<'b, T>
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for RefMut<'b, T>
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> From for RefMut<'b, T>
fn from(t: T) -> TReturns the argument unchanged.
impl<T, U> Into for RefMut<'b, T>
fn into(self: Self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom for RefMut<'b, T>
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for RefMut<'b, T>
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>
impl<T: ?Sized + Debug> Debug for crate::cell::RefMut<'_, T>
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl<T: ?Sized + fmt::Display> Display for RefMut<'_, T>
fn fmt(self: &Self, f: &mut fmt::Formatter<'_>) -> fmt::Result
impl<T: ?Sized> Deref for RefMut<'_, T>
fn deref(self: &Self) -> &T
impl<T: ?Sized> DerefMut for RefMut<'_, T>
fn deref_mut(self: &mut Self) -> &mut T