datum-core 0.6.0

Rust stream-processing library mirroring Akka/Pekko Streams Typed, built on Ractor actors
Documentation
//! Dynamic stream controls and attachment points modeled after Akka Streams.
//!
//! `KillSwitches` expose reusable shutdown/abort controls for already-wired streams without
//! starting any work before materialization.
//!
//! The hub stages materialize reusable attachment points:
//! - `MergeHub` materializes a `Sink` that many producers can attach to over time.
//! - `BroadcastHub` materializes a `Source` that many consumers can attach to over time.
//! - `PartitionHub` materializes a `Source` whose elements are routed to one selected consumer.
//!
//! `BroadcastHub` and `PartitionHub` follow Akka's caveat that one upstream producer adapts to the
//! slowest active consumer unless callers add their own buffering or drop stages around the
//! materialized consumer sources.
//!
//! Datum's `BroadcastHub` differs from Akka when there are zero attached consumers: Datum blocks
//! upstream immediately, while Akka may pre-buffer up to `buffer_size` elements before stalling.

mod hub;
mod kill_switch;

pub use hub::{
    BroadcastHub, BroadcastHubConsumerSource, MergeHub, MergeHubDrainingControl,
    PartitionConsumerInfo, PartitionHub, PartitionHubConsumerSource,
};
pub use kill_switch::{KillSwitches, SharedKillSwitch, UniqueKillSwitch};