Skip to main content

behavior/
lib.rs

1//! Pure, typed actor-behavior primitives. A [`Behavior`] folds its associated
2//! event protocol into exactly [`Actions`]: sends, fresh creations, and its
3//! next behavior or termination. Higher capabilities are composed from these
4//! explicit transition parts.
5
6// The `workers!` macro emits `::behavior::…` paths; this alias lets
7// those expansions resolve inside this crate too (macro hygiene).
8extern crate self as behavior;
9
10mod actor;
11mod deadlined;
12mod fold;
13mod stashing;
14mod supervision;
15mod transition;
16mod verdict;
17mod watching;
18
19// `Fsm` is a thin state-machine helper built from the core stashing primitive.
20mod fsm;
21mod protocol;
22mod receive_timeout;
23mod shutdown;
24mod spec;
25
26pub use actor::{
27    Address, BirthMode, Births, Create, CreationKind, Delivery, MailAddr, NoBirths, Recipient,
28    Route,
29};
30pub use deadlined::{At, AtActions, AtEvent, AtReaction, AtSends};
31pub use fold::{Base, Behavior, BehaviorActed, FnState, State, Transcript, User, UserEvent, run};
32pub use fsm::{Fsm, Move};
33pub use protocol::{
34    ChildEvent, ChildStopped, ObserveChild, ObservePeer, PeerEvent, PeerStopped,
35    ReportWorkerStopped, ScheduleAfter, ScheduleAt, ShutdownEvent, ShutdownRequested, TimeEvent,
36    TimerElapsed, TimerGeneration, TimerId, WorkerEvent, WorkerStopped,
37};
38pub use receive_timeout::{
39    ReceiveTimeout, ReceiveTimeoutActions, ReceiveTimeoutError, ReceiveTimeoutEvent,
40    ReceiveTimeoutReaction, ReceiveTimeoutSends,
41};
42pub use shutdown::{FinalizeOnShutdown, ShutdownProtocol, ShutdownReaction, StopOnShutdown};
43pub use spec::Spec;
44pub use stashing::{StashRoute, Stashing};
45pub use supervision::{
46    Proxy, ProxyCommand, RestartPolicy, Strategy, Supervising, SupervisionEvent,
47    SupervisionFailure, SupervisionFailureReaction, restart_all, restart_one, restart_rest,
48    retire_on_supervision_failure, stop_on_supervision_failure,
49};
50pub use transition::{Acted, Actions, Become, SendAlgebra, SendProduct, ServiceSends};
51pub use verdict::{Never, Step};
52pub use watching::{LinkReaction, WatchEvent, Watching, stop_on_abnormal_death};
53
54mod exit;
55
56pub use exit::{Crash, Exit, RestartDenial, SupervisionFailureReason};
57
58pub use behavior_macros::workers;