[][src]Crate xactor

Xactor is a rust actors framework based on async-std

Documentation

Features

  • Async actors.
  • Actor communication in a local context.
  • Using Futures for asynchronous message handling.
  • Typed messages (No Any type). Generic messages are allowed.

Examples

use xactor::*;

#[message(result = "String")]
struct ToUppercase(String);

struct MyActor;

impl Actor for MyActor {}

#[async_trait::async_trait]
impl Handler<ToUppercase> for MyActor {
    async fn handle(&mut self, _ctx: &Context<Self>, msg: ToUppercase) -> String {
        msg.0.to_uppercase()
    }
}

#[async_std::main]
async fn main() -> Result<()> {
    // Start actor and get its address
    let mut addr = MyActor.start().await;

    // Send message `ToUppercase` to actor via addr
    let res = addr.call(ToUppercase("lowercase".to_string())).await?;
    assert_eq!(res, "LOWERCASE");
    Ok(())
}

Performance

Actix vs. Xactor

Wait for responseSend only
Actix1548 ms14 ms
Xactor930 ms30 ms

GitHub repository

References

Structs

Addr

The address of an actor.

Broker

Message broker is used to support publishing and subscribing to messages.

Caller

Caller of a specific message type

Context

An actor execution context.

Sender

Sender of a specific message type

Supervisor

Actor supervisor

Traits

Actor

Actors are objects which encapsulate state and behavior. Actors run within a specific execution context Context<A>. The context object is available only during execution. Each actor has a separate execution context.

Handler

Describes how to handle messages of a specific type. Implementing Handler is a general way to handle incoming messages and streams. The type T is a message which can be handled by the actor.

Message

Represents a message that can be handled by the actor.

Service

Trait define a system service.

Type Definitions

Error
Result

Attribute Macros

message

Implement an xactor message type.