pub struct SharedMutRef<'r, T: ?Sized + 'r>(/* private fields */);Expand description
A type which allows to share a mutable refernce and mutate the value behind it.
Implementations§
Sourcepub fn new(value_ref: &'r mut T) -> Self
pub fn new(value_ref: &'r mut T) -> Self
Creates a new SharedMutRef containing the given mutable reference.
§Example
use shared_mut_ref::SharedMutRef;
let mut value = vec![1, 2, 3];
let shared_mut_ref = SharedMutRef::new(&mut value);Sourcepub fn into_inner(self) -> &'r mut T
pub fn into_inner(self) -> &'r mut T
Unwraps the underlying mutable reference and consumes the SharedMutRef.
§Example
use shared_mut_ref::SharedMutRef;
let mut value = vec![1, 2, 3];
let shared_mut_ref = SharedMutRef::new(&mut value);
let value_ref = shared_mut_ref.into_inner();Sourcepub fn get_temp(&self) -> Option<TempMutRef<'_, 'r, T>>
pub fn get_temp(&self) -> Option<TempMutRef<'_, 'r, T>>
Returns a TempMutRef to the borrowed value if it wasn’t already taken.
§Example
use shared_mut_ref::SharedMutRef;
let mut value = vec![1, 2, 3];
let shared_mut_ref = SharedMutRef::new(&mut value);
let mut temp_mut_ref = shared_mut_ref.get_temp().unwrap();
temp_mut_ref[0] = 4;
assert_eq!(*temp_mut_ref, vec![4, 2, 3]);Sourcepub fn modify<U, F>(&self, f: F) -> Option<U>
pub fn modify<U, F>(&self, f: F) -> Option<U>
Modifies the borrowed value if TempMutRef wasn’t taken.
§Example
use shared_mut_ref::SharedMutRef;
let mut value = vec![1, 2, 3];
let shared_mut_ref = SharedMutRef::new(&mut value);
shared_mut_ref.modify(|value_ref| value_ref.reverse());
assert_eq!(shared_mut_ref.get(), Some(vec![3, 2, 1]));Sourcepub fn set(&self, value: T) -> Result<(), T>
pub fn set(&self, value: T) -> Result<(), T>
Sets the borrowed value if TempMutRef wasn’t taken.
§Example
use shared_mut_ref::SharedMutRef;
let mut value = vec![1, 2, 3];
let shared_mut_ref = SharedMutRef::new(&mut value);
shared_mut_ref.set(vec![4, 5, 6]);
assert_eq!(shared_mut_ref.get(), Some(vec![4, 5, 6]));Sourcepub fn replace(&self, new_value: T) -> Result<T, T>
pub fn replace(&self, new_value: T) -> Result<T, T>
Replaces the borrowed value with new_value and returns
the old borrowed value if TempMutRef wasn’t taken.
§Example
use shared_mut_ref::SharedMutRef;
let mut value = vec![1, 2, 3];
let shared_mut_ref = SharedMutRef::new(&mut value);
assert_eq!(shared_mut_ref.replace(vec![4, 5, 6]), Ok(vec![1, 2, 3]));
assert_eq!(shared_mut_ref.get(), Some(vec![4, 5, 6]));Sourcepub fn take(&self) -> Option<T>
pub fn take(&self) -> Option<T>
Takes the borrowed value and leaves a default value in its place
if TempMutRef wasn’t taken.
§Example
use shared_mut_ref::SharedMutRef;
let mut value = vec![1, 2, 3];
let shared_mut_ref = SharedMutRef::new(&mut value);
assert_eq!(shared_mut_ref.take(), Some(vec![1, 2, 3]));
assert_eq!(shared_mut_ref.get(), Some(vec![]));Sourcepub fn get(&self) -> Option<T>
pub fn get(&self) -> Option<T>
Clones the borrowed value and returns it if TempMutRef wasn’t taken.
§Example
use shared_mut_ref::SharedMutRef;
let mut value = vec![1, 2, 3];
let shared_mut_ref = SharedMutRef::new(&mut value);
assert_eq!(shared_mut_ref.get(), Some(vec![1, 2, 3]));Trait Implementations§
Auto Trait Implementations§
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