[−][src]Trait xtra::Handler
A trait indicating that an Actor
can handle a given Message
asynchronously, and the logic to handle the message. If the message should be handled synchronously,
then the SyncHandler
trait should rather be implemented.
Without the nightly
feature enabled, this is an async_trait
,
so implementations should be annotated #[async_trait]
.
Example
struct Msg; impl Message for Msg { type Result = u32; } #[async_trait::async_trait] impl Handler<Msg> for MyActor { async fn handle(&mut self, message: Msg, ctx: &mut Context<Self>) -> u32 { 20 } } #[smol_potat::main] async fn main() { let addr = MyActor.spawn(); assert_eq!(addr.send(Msg).await, Ok(20)); }
Required methods
#[must_use]fn handle<'life0, 'life1, 'async_trait>(
&'life0 mut self,
message: M,
ctx: &'life1 mut Context<Self>
) -> Pin<Box<dyn Future<Output = M::Result> + Send + 'async_trait>> where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
&'life0 mut self,
message: M,
ctx: &'life1 mut Context<Self>
) -> Pin<Box<dyn Future<Output = M::Result> + Send + 'async_trait>> where
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Handle a given message, returning its result.
Without the nightly
feature enabled, this is an async_trait
.
See the trait documentation to see an example of how this method can be declared.