Skip to main content

Handled

Enum Handled 

Source
pub enum Handled {
    Ok,
    BlockOn(BlockingFuture),
    Shutdown,
}
Expand description

State transition indication at the end of a message or event handler.

Variants§

§

Ok

Continue as normal

§

BlockOn(BlockingFuture)

Immediately suspend processing of any messages and events until the BlockingFuture has completed

§

Shutdown

Shut the component down without handling any further messages.

This is an orderly shutdown result. Use HandlerError::Unrecoverable for terminal faults.

Implementations§

Source§

impl Handled

Source

pub const OK: Result<Handled, HandlerError>

A successful no-op handler result.

Source

pub const SHUTDOWN: Result<Handled, HandlerError>

A successful shutdown handler result.

Source

pub fn block_on<CD, F>( component: &mut CD, fun: impl FnOnce(ComponentDefinitionAccess<CD>) -> F, ) -> Result<Handled, HandlerError>
where CD: ComponentDefinition + 'static, F: Future<Output = Result<Handled, HandlerError>> + Send + 'static,

Constructs a state transition instruction which causes the component to suspend processing of any messages and events until the async fun (the returned Future) has completed.

Mutable access to the component’s internal state is provided via the ComponentDefinitionAccess guard object.

Please see the documentation for ComponentDefinitionAccess for details on how the internal state may (and may not) be used.

§Example

#[derive(ComponentDefinition, Actor)]
struct AsyncComponent {
   ctx: ComponentContext<Self>,
   flag: bool,
}
impl AsyncComponent {
    fn new() -> Self {
        AsyncComponent {
            ctx: ComponentContext::uninitialised(),
            flag: false,    
        }
    }   
}
impl ComponentLifecycle for AsyncComponent {
    fn on_start(&mut self) -> HandlerResult {
        // on nightly you can just write: async move |mut async_self| {...}
        Handled::block_on(self, move |mut async_self| async move {
            async_self.flag = true;
            Handled::OK
        })
    }   
}
§See Also

In order to continue processing messages and events in parallel to completing the future use spawn_local.

In order to run a large future which does not need access to component’s internal state at all or until the very end, consider using spawn_off.

Source

pub fn is_ok(&self) -> bool

Returns true if this instance is an Handled::Ok variant

Trait Implementations§

Source§

impl Debug for Handled

Source§

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

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

impl Default for Handled

Source§

fn default() -> Handled

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

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> DispatchEvent for T
where T: Any + Send + Debug,

Source§

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

Convert this event into an erased Any payload for downcasting.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> Erased for T

Source§

impl<M> MessageBounds for M
where M: Debug + Send + 'static,