pub struct OptionGuardMut<'a, T: 'a> { /* private fields */ }
Expand description
A value taken from an Option<T>
. OptionGuardMut<T>
dereferences to a T
, and the inner T
can be moved out with OptionGuardMut::into_inner
. When dropped, the OptionGuardMut
moves
the taken value back into the Option
it came from.
§Examples
Take a value from an option, which is automatically returned:
let mut thing = Some(5);
{
let mut stolen = thing.steal_mut();
assert_eq!(*stolen, 5);
*stolen = 6;
}
assert_eq!(thing, Some(6));
If the guard is consumed, the value is never returned.
let mut thing = Some(5);
{
// Keep the thing!
let stolen = thing.steal_mut().into_inner();
assert_eq!(stolen, 5);
}
assert_eq!(thing, None);
Calling steal_mut
on a None
immediately panics:
ⓘ
let mut thing: Option<i32> = None;
// Panics here!
thing.steal_mut();
Implementations§
Source§impl<'a, T> OptionGuardMut<'a, T>
impl<'a, T> OptionGuardMut<'a, T>
Sourcepub fn into_inner(self) -> T
pub fn into_inner(self) -> T
Keep the value stolen from the Option
and do not return it.
Trait Implementations§
Source§impl<'a, T> Deref for OptionGuardMut<'a, T>
impl<'a, T> Deref for OptionGuardMut<'a, T>
Source§impl<'a, T> DerefMut for OptionGuardMut<'a, T>
impl<'a, T> DerefMut for OptionGuardMut<'a, T>
Auto Trait Implementations§
impl<'a, T> Freeze for OptionGuardMut<'a, T>where
T: Freeze,
impl<'a, T> RefUnwindSafe for OptionGuardMut<'a, T>where
T: RefUnwindSafe,
impl<'a, T> Send for OptionGuardMut<'a, T>where
T: Send,
impl<'a, T> Sync for OptionGuardMut<'a, T>where
T: Sync,
impl<'a, T> Unpin for OptionGuardMut<'a, T>where
T: Unpin,
impl<'a, T> !UnwindSafe for OptionGuardMut<'a, T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more