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
Wait for response
Send only
Actix
1548 ms
14 ms
Xactor
930 ms
18 ms
GitHub repository
References