1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//! # SIDS - Simple Implementation of a Distributed System
//!
//! SIDS is an actor-based framework for building concurrent applications in Rust.
//! It provides an ergonomic API for actor systems, message passing, and streaming data processing.
//!
//! ## Features
//!
//! - **Core Actor System**: Stable APIs for actor management and message passing
//! - **Streaming**: Functional reactive streams with source/flow/sink patterns (requires `streaming` feature)
//! - **Supervision**: Actor supervision and visualization (requires `visualize` feature, **experimental**)
//!
//! ## API Stability
//!
//! SIDS follows [Semantic Versioning](https://semver.org/). Starting with v1.0.0:
//!
//! - **Stable APIs**: Core actor system and streaming module
//! - **Experimental APIs**: Supervision/visualization module (may change in minor versions)
//!
//! See [docs/STABILITY.md](../docs/STABILITY.md) for detailed stability guarantees.
//!
//! ## Quick Start
//!
//! ```rust
//! use sids::actors::{self, actor::Actor, messages::Message};
//!
//! # struct MyActor;
//! # impl Actor<String, sids::actors::messages::ResponseMessage> for MyActor {
//! # async fn receive(&mut self, message: Message<String, sids::actors::messages::ResponseMessage>) {
//! # // Handle message
//! # }
//! # }
//! #
//! # async fn example() {
//! // Create an actor system
//! let mut system = actors::start_actor_system::<String, actors::messages::ResponseMessage>();
//!
//! // Spawn an actor
//! actors::spawn_actor(&mut system, MyActor, Some("my-actor".to_string())).await;
//! # }
//! ```
//!
//! For detailed guides, see [GUIDE.md](../GUIDE.md) and [README.md](../README.md).
/// Streaming data processing module with reactive streams.
///
/// **Stability**: Stable as of v1.0.0
///
/// Provides Source, Flow, and Sink abstractions for building streaming data pipelines.
/// Requires the `streaming` feature flag.
///
/// # Examples
///
/// ```rust
/// # #[cfg(feature = "streaming")]
/// # {
/// use sids::streaming::source::Source;
/// use sids::streaming::stream_message::NotUsed;
///
/// let source = Source::new("data".to_string(), NotUsed);
/// let transformed = source.map(|s| s.to_uppercase());
/// # }
/// ```
/// Actor supervision and visualization module.
///
/// **Stability**: ⚠️ **EXPERIMENTAL** - APIs may change in minor versions before stabilization
///
/// This module provides tools for supervising actors and visualizing actor system behavior.
/// Requires the `visualize` feature flag.
///
/// The supervision APIs are still evolving and may have breaking changes in minor versions
/// until they are stabilized in a future release. See [docs/STABILITY.md](../docs/STABILITY.md)
/// for more information.
/// Supervision export functionality.
///
/// **Stability**: ⚠️ **EXPERIMENTAL** - Part of the supervision module