Crate xactor

Source
Expand description

§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: &mut Context<Self>, msg: ToUppercase) -> String {
        msg.0.to_uppercase()
    }
}

#[xactor::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 ms18 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
WeakAddr

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. The type T is a message which can be handled by the actor.
LocalService
Trait define a local service.
Message
Represents a message that can be handled by the actor.
Service
Trait define a global service.
StreamHandler
Describes how to handle messages of a specific type. Implementing Handler is a general way to handle incoming streams. The type T is a stream message which can be handled by the actor. Stream messages do not need to implement the Message trait.

Functions§

block_on
Spawns a task and blocks the current thread on its result.
sleep
Sleeps for the specified amount of time.
spawn
Spawns a task.
timeout
Awaits a future or times out after a duration of time.

Type Aliases§

ActorId
Error
Alias of anyhow::Error
Result
Alias of anyhow::Result

Attribute Macros§

main
Implement an xactor main function.
message
Implement an xactor message type.