ascolt

Crates.ioascolt
lib.rsascolt
version0.1.6
created_at2025-09-08 07:44:02.123501+00
updated_at2025-09-10 08:38:00.921317+00
descriptionAsync runtime-agnostic actor framework
homepage
repositoryhttps://github.com/sterrlia/ascolt
max_upload_size
id1828949
size44,740
Sterr (sterrlia)

documentation

https://docs.rs/ascolt

README

Ascolt

crates.io version docs.rs docs CI build Dependency Status Minimum Supported Rust Version

Async runtime-agnostic actor framework

Features

  • Clean syntax for request-response pattern (you just implement CallHandlerTrait)
  • Async support
  • Handler errors can trigger actor stop, forced stop, or restart (behavior is customizable)
  • No built-in child actor concept, but you can run actors within other actors and store their tx in the parent actor's state
  • No heavy macros
  • Strict typing

Examples

let first_actor = FirstActor {};
let (first_actor_tx, first_actor_rx) = create_channel(100);
let second_actor = SecondActor { first_actor_tx };
let (second_actor_tx, second_actor_rx) = create_channel(100);

// if using tokio runtime
tokio::spawn(start_actor(actor, first_actor_rx));
tokio::spawn(start_actor(second_actor, second_actor_rx));

first_actor_tx.tell(SomeRequest { number: 3 })
    .await?; // fire-and-forget

let result = second_actor_tx
    .ask(SecondActorCalcRequest(10))
    .await?; // request-response

println!("Result: {}", result.0);

More examples located at examples directory.

What can be added

  • Supervisor for controlling multiple actors
  • Dependency graph (e.g., automatically shut down actors when the actors they depend on stop)
  • Actor communication over the network
Commit count: 63

cargo fmt