Struct tor_dirmgr::SharedMutArc
source · [−]pub struct SharedMutArc<T> { /* private fields */ }
Expand description
A shareable mutable-ish optional reference to a an Arc
.
Because you can’t actually change a shared Arc
, this type implements
mutability by replacing the Arc itself with a new value. It tries
to avoid needless clones by taking advantage of Arc::make_mut
.
Implementations
sourceimpl<T> SharedMutArc<T>
impl<T> SharedMutArc<T>
sourcepub fn get(&self) -> Option<Arc<T>>
pub fn get(&self) -> Option<Arc<T>>
Return a new reference to the current value, if there is one.
sourcepub fn mutate<F, U>(&self, func: F) -> Result<U> where
F: FnOnce(&mut T) -> Result<U>,
T: Clone,
pub fn mutate<F, U>(&self, func: F) -> Result<U> where
F: FnOnce(&mut T) -> Result<U>,
T: Clone,
Replace the contents of this SharedMutArc with the results of applying
func
to the inner value.
Gives an error if there is no inner value.
Other threads will not abe able to access the inner value while the function is running.
Limitation: No panic-safety
If func
panics while it’s running, this object will become invalid
and future attempts to use it will panic. (TODO: Fix this.)
Trait Implementations
sourceimpl<T: Debug> Debug for SharedMutArc<T>
impl<T: Debug> Debug for SharedMutArc<T>
Auto Trait Implementations
impl<T> RefUnwindSafe for SharedMutArc<T>
impl<T> Send for SharedMutArc<T> where
T: Send + Sync,
impl<T> Sync for SharedMutArc<T> where
T: Send + Sync,
impl<T> Unpin for SharedMutArc<T>
impl<T> UnwindSafe for SharedMutArc<T>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
sourcefn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
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
sourcefn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
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
sourcefn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
sourcefn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
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
sourceimpl<T> DowncastSync for T where
T: Any + Send + Sync,
impl<T> DowncastSync for T where
T: Any + Send + Sync,
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more