pub struct Payload<T = ()>where
T: Send,{ /* private fields */ }Expand description
A globally-registered, cheaply-cloneable slot for handing a value of type
T between async tasks and the UI, with an associated pending flag to track
in-flight operations. Instances sharing the same id share the same storage.
Implementations§
Source§impl<T> Payload<T>where
T: Send + 'static,
impl<T> Payload<T>where
T: Send + 'static,
Sourcepub fn new<S: Display>(id: S) -> Self
pub fn new<S: Display>(id: S) -> Self
Returns the payload registered under id, creating and registering a
new empty one if none exists yet, so callers sharing an id share state.
Sourcepub fn store(&self, data: T)
pub fn store(&self, data: T)
Stores a value in the slot, replacing any previously stored value.
Sourcepub fn is_pending(&self) -> bool
pub fn is_pending(&self) -> bool
Returns true if the pending flag is set.
Sourcepub fn mark_pending(&self)
pub fn mark_pending(&self)
Sets the pending flag, indicating an operation is in progress.
Sourcepub fn clear_pending(&self)
pub fn clear_pending(&self)
Clears the pending flag, indicating no operation is in progress.
Sourcepub fn take(&self) -> Option<T>
pub fn take(&self) -> Option<T>
Removes and returns the stored value, clearing the pending flag, or
returns None if the slot is empty.
Sourcepub fn inner_clone(&self) -> Option<T>where
T: Clone,
pub fn inner_clone(&self) -> Option<T>where
T: Clone,
Returns a clone of the stored value without removing it, or None if
the slot is empty.
Trait Implementations§
Auto Trait Implementations§
impl<T> Freeze for Payload<T>
impl<T> RefUnwindSafe for Payload<T>
impl<T> Send for Payload<T>
impl<T> Sync for Payload<T>
impl<T> Unpin for Payload<T>
impl<T> UnsafeUnpin for Payload<T>
impl<T> UnwindSafe for Payload<T>
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>. Box<dyn Any> can
then be further downcast into Box<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>. Rc<Any> 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.