[−][src]Crate xactor
Xactor is a rust actors framework based on async-std
Documentation
- GitHub repository
- Cargo package
- Minimum supported Rust version: 1.39 or later
Features
- Async actors.
- Actor communication in a local context.
- Using Futures for asynchronous message handling.
- Typed messages (No
Anytype). 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 response | Send only | |
|---|---|---|
| Actix | 1548 ms | 14 ms |
| Xactor | 930 ms | 18 ms |
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 |
| 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 |
Functions
| 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 Definitions
| Error | Alias of anyhow::Error |
| Result | Alias of anyhow::Result |
Attribute Macros
| main | Implement an xactor main function. |
| message | Implement an xactor message type. |