ascolt

Crates.ioascolt
lib.rsascolt
version0.1.11
created_at2025-09-08 07:44:02.123501+00
updated_at2025-12-19 18:28:08.217182+00
descriptionAsync runtime-agnostic actor framework
homepage
repositoryhttps://github.com/sterrlia/ascolt
max_upload_size
id1828949
size56,308
(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 type-safe syntax
  • Async support
  • Both unbounded and bounded channels supported
  • Handler errors can trigger actor stop, forced stop, or restart (behavior is customizable)
  • No heavy macros
  • No unsafe code

Examples

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

// if using tokio runtime
tokio::spawn(ascolt::run(actor, first_actor_rx));
tokio::spawn(ascolt::run(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

  • Panic isolation
  • Backpressure management
  • 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

Alternatives

Commit count: 63

cargo fmt