pub struct Teardown { /* private fields */ }Expand description
A teardown is a closure which owns resources, by the nature of them being moved into said closure. The closure itself is responsible for releasing these resources.
For example if this resource was a subscription, the closure looks like this:
move |context| subscription.unsubscribe(context)Just like subscriptions, a teardown once closed cannot be opened again.
Teardown intentionally does not implement SubscriptionLike to facilitate
the [SubscriptionCollection][crate::SubscriptionCollection] trait which
uses Teardown as the base type of operation. Allowing generic functions
where you can add anything that is Into<Teardown> such as Subscriptions.
Implementations§
Source§impl Teardown
impl Teardown
pub fn new<F>(f: F) -> Teardown
pub fn new_from_box(f: Box<dyn FnOnce() + Send + Sync>) -> Teardown
pub fn new_work_cancellation<S>(
cancellation_id: WorkCancellationId,
scheduler: SchedulerHandle<S>,
) -> Teardownwhere
S: 'static + Scheduler,
pub fn new_work_invokation<S>(
invoke_id: WorkInvokeId,
scheduler: SchedulerHandle<S>,
) -> Teardownwhere
S: 'static + Scheduler,
pub fn new_invoked_work_cancellation<S>(
invoke_id: WorkInvokeId,
scheduler: SchedulerHandle<S>,
) -> Teardownwhere
S: 'static + Scheduler,
Sourcepub fn new_work_invokation_and_cancellation<S>(
invoke_id: WorkInvokeId,
cancellation_id: WorkCancellationId,
scheduler: SchedulerHandle<S>,
) -> Teardownwhere
S: 'static + Scheduler,
pub fn new_work_invokation_and_cancellation<S>(
invoke_id: WorkInvokeId,
cancellation_id: WorkCancellationId,
scheduler: SchedulerHandle<S>,
) -> Teardownwhere
S: 'static + Scheduler,
Invokes one work and cancels another in a single teardown.
Sourcepub fn take(self) -> Option<Box<dyn FnOnce() + Send + Sync>>
pub fn take(self) -> Option<Box<dyn FnOnce() + Send + Sync>>
Consumes the Teardown without executing it, returning the stored function if it wasn’t already closed. Used when the stored function is moved to somewhere else, like into a subscription.
It’s private to ensure that it’s not taken without either executing it or placing it somewhere else where execution is also guaranteed.
Sourcepub fn execute(self)
pub fn execute(self)
Immediately consumes and calls the teardowns closure, leaving a None behind, rendering the teardown permamently closed.
pub fn is_closed(&self) -> bool
Trait Implementations§
Source§impl<S> From<S> for Teardown
Exposes and respects the original subscriptions closed-ness by storing it
in an option.
impl<S> From<S> for Teardown
Exposes and respects the original subscriptions closed-ness by storing it in an option.
This means that when you convert an already closed subscription into a teardown, it will be immediately dropped.
Auto Trait Implementations§
impl Freeze for Teardown
impl !RefUnwindSafe for Teardown
impl Send for Teardown
impl Sync for Teardown
impl Unpin for Teardown
impl !UnwindSafe for Teardown
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self using default().
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more