[−][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
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 response | Send only | |
---|---|---|
Actix | 1548 ms | 14 ms |
Xactor | 930 ms | 30 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 |
System |
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 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
main | Implement an xactor main function. |
message | Implement an xactor message type. |