Need help with xactor?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

sunli829
170 Stars 21 Forks MIT License 114 Commits 13 Opened issues

Description

Xactor is a rust actors framework based on async-std

Services available

!
?

Need anything else?

Contributors list

# 36,353
async-a...
rust-cr...
GraphQL
rust-la...
67 commits
# 257,334
PHP
symfony...
Symfony
actor-m...
6 commits
# 162,016
webrtc
rust-cr...
GraphQL
rust-la...
4 commits
# 86,160
pony-la...
unix
Windows
fine-gr...
2 commits
# 82,771
Rust
desktop...
yaml-pa...
npm
2 commits
# 158,229
c-plus-...
Shell
c-plus-...
c-plus-...
2 commits
# 587,965
C#
openapi
actor-m...
rust-la...
1 commit
# 569,979
HTML
redis-s...
Redis
rust-la...
1 commit
# 431,899
Shell
Nextclo...
rust-la...
rpg
1 commit

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 for MyActor { async fn handle(&mut self, _ctx: &mut Context, 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

https://github.com/sunli829/xactor-benchmarks

Installation

Xactor requires async-trait on userland.

With cargo add installed, run:

$ cargo add xactor
$ cargo add async-trait

We also provide the tokio runtime instead of async-std. To use it, you need to activate

runtime-tokio
and disable default features.

You can edit your

Cargo.toml
as follows:
toml
xactor = { version = "x.x.x", features = ["runtime-tokio"], default-features = false }

References

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.