Skip to main content

Teardown

Struct Teardown 

Source
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

Source

pub fn new<F>(f: F) -> Teardown
where F: 'static + FnOnce() + Send + Sync,

Source

pub fn new_from_box(f: Box<dyn FnOnce() + Send + Sync>) -> Teardown

Source

pub fn new_work_cancellation<S>( cancellation_id: WorkCancellationId, scheduler: SchedulerHandle<S>, ) -> Teardown
where S: 'static + Scheduler,

Source

pub fn new_work_invokation<S>( invoke_id: WorkInvokeId, scheduler: SchedulerHandle<S>, ) -> Teardown
where S: 'static + Scheduler,

Source

pub fn new_invoked_work_cancellation<S>( invoke_id: WorkInvokeId, scheduler: SchedulerHandle<S>, ) -> Teardown
where S: 'static + Scheduler,

Source

pub fn new_work_invokation_and_cancellation<S>( invoke_id: WorkInvokeId, cancellation_id: WorkCancellationId, scheduler: SchedulerHandle<S>, ) -> Teardown
where S: 'static + Scheduler,

Invokes one work and cancels another in a single teardown.

Source

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.

Source

pub fn execute(self)

Immediately consumes and calls the teardowns closure, leaving a None behind, rendering the teardown permamently closed.

Source

pub fn is_closed(&self) -> bool

Trait Implementations§

Source§

impl Debug for Teardown

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for Teardown

Source§

fn default() -> Teardown

Returns the “default value” for a type. Read more
Source§

impl<S> From<S> for Teardown
where S: 'static + SubscriptionLike + Send + Sync,

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.

Source§

fn from(subscription: S) -> Teardown

Converts to this type from the input type.
Source§

impl PartialEq for Teardown

Source§

fn eq(&self, other: &Teardown) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts 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>

Converts 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)

Converts &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)

Converts &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
where T: Any + Send,

Source§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromWorld for T
where T: Default,

Source§

fn from_world(_world: &mut World) -> T

Creates Self using default().

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> IntoResult<T> for T

Source§

fn into_result(self) -> Result<T, RunSystemError>

Converts this type into the system output type.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> ConditionalSend for T
where T: Send,

Source§

impl<T> Signal for T
where T: 'static + Send + Sync,