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
137 Stars 22 Forks MIT License 114 Commits 6 Opened issues

Description

Xactor is a rust actors framework based on async-std

Services available

!
?

Need anything else?

Contributors list

# 51,806
async-a...
rust-cr...
GraphQL
rust-la...
67 commits
# 274,987
PHP
symfony...
Symfony
actor-m...
6 commits
# 165,497
webrtc
rust-cr...
GraphQL
rust-la...
4 commits
# 86,961
pony-la...
React
unix
dragonf...
2 commits
# 88,110
Rust
desktop...
Shell
yaml-pa...
2 commits
# 161,736
c-plus-...
Shell
c-plus-...
c-plus-...
2 commits
# 596,122
C#
HTTP
openapi
actor-m...
1 commit
# 583,639
JavaScr...
redis-s...
Redis
rust-la...
1 commit
# 438,877
Shell
filesys...
terrain
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.