Expand description
§dactor
An abstract framework for distributed actors in Rust.
dactor provides framework-agnostic traits for building actor-based
systems. It defines the core abstractions for actor spawning, message
delivery, timer scheduling, processing groups, and cluster membership
events — without coupling to any specific actor framework.
§Core Traits
ActorRef— Typed handle to a running actor (tell, ask, stream, feed)Actor— Core actor trait with lifecycle hooksHandler— Per-message-type handler traitClusterEvents— Subscribe to node join/leave notificationsTimerHandle— Cancellable scheduled timerClock— Time abstraction for deterministic testing
§Adapter Crates
Use dactor with a concrete actor framework via an adapter:
dactor-ractor— ractor adapterdactor-kameo— kameo adapter
Re-exports§
pub use actor::cancel_after;pub use actor::ReduceHandler;pub use actor::Actor;pub use actor::ActorContext;pub use actor::ActorError;pub use actor::ActorRef;pub use actor::SpawnConfig;pub use actor::AskReply;pub use actor::Handler;pub use actor::ExpandHandler;pub use actor::TransformHandler;pub use broadcast::BroadcastReceipt;pub use broadcast::BroadcastRef;pub use broadcast::BroadcastTellResult;pub use broadcast::BroadcastTellOutcome;pub use group::ProcessingGroup;pub use circuit_breaker::CircuitBreakerInterceptor;pub use circuit_breaker::CircuitState;pub use clock::Clock;pub use clock::SystemClock;pub use cluster::AdapterCluster;pub use cluster::ClusterEventEmitter;pub use cluster::HealthChecker;pub use cluster::HealthStatus;pub use cluster::UnreachableHandler;pub use cluster::ClusterEvent;pub use cluster::ClusterEvents;pub use cluster::NodeRejectionReason;pub use cluster::SubscriptionId;pub use dead_letter::CollectingDeadLetterHandler;pub use dead_letter::DeadLetterEvent;pub use dead_letter::DeadLetterHandler;pub use dead_letter::DeadLetterInfo;pub use dead_letter::DeadLetterReason;pub use dead_letter::LoggingDeadLetterHandler;pub use errors::ActorSendError;pub use errors::ClusterError;pub use errors::GroupError;pub use errors::RuntimeError;pub use errors::ErrorAction;pub use errors::ErrorCode;pub use errors::NotSupportedError;pub use interceptor::intercept_outbound_stream_item;pub use interceptor::Disposition;pub use interceptor::InboundContext;pub use interceptor::InboundInterceptor;pub use interceptor::InterceptResult;pub use interceptor::Outcome;pub use interceptor::SendMode;pub use interceptor::notify_drop;pub use interceptor::DropNotice;pub use interceptor::DropObserver;pub use interceptor::OutboundContext;pub use interceptor::OutboundInterceptor;pub use interceptor::collect_handler_wrappers;pub use interceptor::apply_handler_wrappers;pub use interceptor::HandlerWrapper;pub use mailbox::MailboxConfig;pub use mailbox::MessageComparer;pub use mailbox::OverflowStrategy;pub use mailbox::StrictPriorityComparer;pub use message::Message;pub use message::HeaderValue;pub use message::Headers;pub use message::MessageId;pub use message::Priority;pub use message::RuntimeHeaders;pub use metrics::ActorMetricsHandle;pub use metrics::ActorMetricsSnapshot;pub use metrics::MetricsInterceptor;pub use metrics::MetricsRegistry;pub use metrics::RuntimeMetrics;pub use node::ActorId;pub use node::NodeId;pub use outbound_queue::OutboundPriorityQueue;pub use outbound_queue::AgingWireComparer;pub use outbound_queue::EnvelopeMetadata;pub use outbound_queue::StrictPriorityWireComparer;pub use outbound_queue::WireEnvelopeComparer;pub use persistence::recover_durable_state;pub use persistence::recover_event_sourced;pub use persistence::DurableState;pub use persistence::EventSourced;pub use persistence::InMemoryStorage;pub use persistence::InMemoryStorageProvider;pub use persistence::JournalEntry;pub use persistence::JournalStorage;pub use persistence::PersistError;pub use persistence::PersistFailurePolicy;pub use persistence::PersistenceId;pub use persistence::PersistentActor;pub use persistence::RecoveryFailurePolicy;pub use persistence::SaveConfig;pub use persistence::SequenceId;pub use persistence::SnapshotConfig;pub use persistence::SnapshotEntry;pub use persistence::SnapshotStorage;pub use persistence::StateStorage;pub use persistence::StorageProvider;pub use pool::Keyed;pub use pool::PoolConfig;pub use pool::PoolRef;pub use pool::PoolRouting;pub use virtual_pool::VirtualPoolRef;pub use registry::ActorRegistry;pub use remote::receive_envelope_body;pub use remote::receive_envelope_body_versioned;pub use remote::ClusterDiscovery;pub use remote::ClusterState;pub use remote::DiscoveredPeer;pub use remote::DiscoveryError;pub use remote::HeaderRegistry;pub use remote::MessageSerializer;pub use remote::MessageVersionHandler;pub use remote::PeerVersionInfo;pub use remote::RemoteMessage;pub use remote::SerializationError;pub use remote::StaticSeeds;pub use remote::WireEnvelope;pub use remote::WireHeaders;pub use remote_ref::ActorRefEnvelope;pub use remote_ref::ActorRefTypeMismatch;pub use remote_ref::RemoteActorRef;pub use remote_ref::RemoteActorRefBuilder;pub use stream::BatchConfig;pub use stream::BatchReader;pub use stream::BatchWriter;pub use stream::StreamReceiver;pub use stream::BoxStream;pub use stream::StreamSendError;pub use stream::StreamSender;pub use supervision::ChildTerminated;pub use supervision::AllForOne;pub use supervision::OneForOne;pub use supervision::RestForOne;pub use supervision::SupervisionAction;pub use supervision::SupervisionStrategy;pub use system_actors::CancelManager;pub use system_actors::CancelRequest;pub use system_actors::CancelResponse;pub use system_actors::NodeDirectory;pub use system_actors::PeerInfo;pub use system_actors::PeerStatus;pub use system_actors::SpawnManager;pub use system_actors::SpawnRequest;pub use system_actors::SpawnResponse;pub use system_actors::SystemActorConfig;pub use system_actors::UnwatchRequest;pub use system_actors::WatchManager;pub use system_actors::WatchNotification;pub use system_actors::WatchRequest;pub use system_actors::validate_handshake;pub use system_actors::verify_peer_identity;pub use system_actors::HandshakeRequest;pub use system_actors::HandshakeResponse;pub use system_actors::RejectionReason;pub use system_actors::is_system_message_type;pub use system_actors::SYSTEM_MSG_TYPE_CANCEL;pub use system_actors::SYSTEM_MSG_TYPE_CONNECT_PEER;pub use system_actors::SYSTEM_MSG_TYPE_DISCONNECT_PEER;pub use system_actors::SYSTEM_MSG_TYPE_SPAWN;pub use system_actors::SYSTEM_MSG_TYPE_UNWATCH;pub use system_actors::SYSTEM_MSG_TYPE_WATCH;pub use system_router::RoutingError;pub use system_router::RoutingOutcome;pub use system_router::SystemMessageRouter;pub use throttle::ActorRateLimiter;pub use timer::TimerHandle;pub use timer::send_after;pub use timer::send_interval;pub use transport::InMemoryTransport;pub use transport::Transport;pub use transport::TransportError;pub use transport::TransportRegistry;pub use type_registry::TypeRegistry;pub use type_registry::ActorFactory;pub use type_registry::ErasedActorFactory;pub use wire_interceptor::MaxBodySizeInterceptor;pub use wire_interceptor::RateLimitWireInterceptor;pub use wire_interceptor::WireDisposition;pub use wire_interceptor::WireInterceptor;pub use wire_interceptor::WireInterceptorPipeline;pub use wire_interceptor::WireProcessResult;pub use wire_interceptor::WireRejectError;pub use worker_ref::WorkerRef;pub use version::DACTOR_WIRE_VERSION;pub use version::ParseWireVersionError;pub use version::WireVersion;
Modules§
- actor
- Core actor traits and types (Actor, ActorRef, Handler, etc.).
- broadcast
- Broadcast messaging for actor groups (BroadcastRef, tell, ask). Broadcast messaging for actor groups.
- circuit_
breaker - Circuit breaker interceptor for fault isolation. Circuit breaker interceptor for per-actor fault isolation.
- clock
- Clock abstraction for deterministic testing.
- cluster
- Cluster membership events and subscriptions.
- dead_
letter - Dead letter handling for undeliverable messages.
- dispatch
- Message dispatch envelopes for tell, ask, stream, feed, and transform. Type-erased dispatch infrastructure for delivering messages to actors.
- errors
- Error types for actor operations.
- group
- Named processing groups for actor pub/sub. Named processing groups for actor pub/sub.
- interceptor
- Inbound and outbound message interceptors. Inbound interceptor pipeline.
- mailbox
- Mailbox capacity and overflow configuration.
- message
- Message trait and header types.
- metrics
- Metrics collection interceptor and registry. Per-actor metrics with lock-free recording and windowed queries.
- node
- Node and actor identity types.
- outbound_
queue - Per-destination outbound priority queue for remote messages. Per-destination outbound priority queue for remote messages.
- persistence
- Persistence support: journals, snapshots, and durable state.
- pool
- Actor pool routing and configuration. Actor pool with configurable routing strategies.
- prelude
- Convenience re-exports of the most commonly used types.
- proto
- Protobuf serialization for system messages and wire envelope framing. Protobuf serialization for system messages and wire envelope framing.
- registry
- Named actor registry for service location.
- remote
- Remote actor types, wire format, and cluster discovery. Remote actor type definitions.
- remote_
ref - Remote actor reference for cross-node communication. Remote actor reference that serializes messages and sends via transport.
- runtime_
support - Shared runtime helpers for adapter implementations. Shared runtime helpers for adapter implementations.
- stream
- Streaming primitives (StreamSender, StreamReceiver, batching).
- supervision
- Supervision strategies (OneForOne, AllForOne, RestForOne). Supervision primitives for the actor system.
- system_
actors - System actors for remote operations (spawn, watch, cancel, directory). System actors for remote operations.
- system_
router - Transport routing for incoming system messages to native actor mailboxes. Transport routing for incoming system messages.
- throttle
- Rate limiting for actors.
- timer
- Timer scheduling (send_after, send_interval). Timer utilities for scheduling delayed and periodic messages.
- transport
- Abstract transport for remote actor communication. Abstract transport for remote actor communication.
- type_
registry - Type registry for remote message deserialization and actor factories. Type registry for remote message deserialization and actor factory lookup.
- version
- Wire protocol version for cluster compatibility checks. Wire protocol version for dactor cluster communication.
- virtual_
pool - Virtual actor pool with single-threaded routing task. Virtual actor pool with single-threaded routing.
- wire_
interceptor - Envelope-level interceptor for incoming remote messages. Envelope-level interceptor for incoming remote messages.
- worker_
ref - Worker reference for distributed actor pools (local + remote). Worker reference for distributed actor pools.
Structs§
- Cancellation
Token - A token which can be used to signal a cancellation request to one or more tasks.