tractor
Actor framework for Rust, modelled after Pony's actors:
-
Actor
s cannot deadlock! -
Send
ing a message to anActor
can never fail. -
No
async
inActor
s. Behaviors cannot block. -
Actor
s are garbage collected. -
The implemention of
tractor
is rather simple compared against other Actor implementations in Rust. -
It uses
tokio
but was usingasync_std
in the past.
Example
In Cargo.toml
add tractor = "*"
and tokio = "1.2.0"
.
use *;
More details
-
Actor
s have unbounded mailboxes andsend
is non-blocking. -
Actor
s cannot be manually stopped. They terminate as soon as no further reference to them exists and their mailbox is empty. This implies that sending a message to anActor
can never fail except for running out of memory. To avoid overloading of anActor
you can check it's current length of it's mailbox. -
The behaviors of an
Actor
have no return value! As such,Actor
s do not support "waiting" for a result. To "simulate" Request/Response, pass theActor
s address in the message and respond to it. -
The behaviors of an
Actor
are NOTasync fn
s!Async
would imply that the execution can "halt". Use an async actor (ActorBehaviorAsync
/ActorHooksAsync
) instead. -
NOTE: Any
Actor
cycles will defeat the garbage collection ofActor
s.