Struct avalanche::shared::Shared [−][src]
pub struct Shared<T: ?Sized> { /* fields omitted */ }
Implementations
Executes the given function with an immutable reference to the wrapped value.
Arguments
func
- The function to execute with a reference to the wrapped value.
Panics
Panics if the wrapped value is being used by an exec_mut
call.
This is only possible if the method was called on a different Shared
variable corresponding to the same shared value.
Example
let num = Shared::new(10u8);
let squared = num.exec(|&n| n * n);
assert_eq!(squared, 100);
Executes the given function with a mutable reference to the wrapped value.
Arguments
func
- The function to execute with a reference to the wrapped value.
Panics
Panics if the wrapped value is being used by another exec
or exec_mut
call.
This is only possible if the method was called on a different Shared
variable corresponding to the same shared value.
Example
let sequence = Shared::new([1u8, 2, 3]);
sequence.exec_mut(|nums| nums.iter_mut().for_each(|num| *num *= *num));
sequence.exec(|nums| assert_eq!(nums, &[1, 4, 9]));
Trait Implementations
Auto Trait Implementations
impl<T> !RefUnwindSafe for Shared<T>
impl<T> !UnwindSafe for Shared<T>
Blanket Implementations
Mutably borrows from an owned value. Read more
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
. Read more
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read more