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
//! roplat core runtime and macro entry points.
//!
//! This crate exposes three core abstractions:
//! - [`node::Node`]: computation unit.
//! - [`rhythm::Rhythm`]: scheduling cadence.
//! - `#[roplat::system]`: compiles connections into an execution graph.
//!
//! # Quick Example
//! ```rust,ignore
//! #[roplat::system]
//! async fn main() {
//! let mut source = SourceNode::default();
//! let mut controller = ControllerNode::default();
//! let mut sink = SinkNode::default();
//! let (_, mut rhythm) = roplat::rhythm::create_count_rhythm(10);
//!
//! rhythm >> {
//! source >> controller >> sink;
//! };
//! }
//! ```
/// Communication primitives (ring buffer, triple buffer, IPC backends).
/// Built-in nodes and the [`Node`] trait.
/// Legacy recording API (kept for compatibility).
// pub mod resource;
/// Rhythm and replay subsystem.
/// Cross-language type binding abstraction.
/// Unified error type and result alias.
pub use ;
/// Node trait.
pub use Node;
/// Common logic nodes and compatibility type aliases.
pub use logic;
/// `#[node]` proc macro.
pub use node;
/// `#[replay]` proc macro.
pub use replay;
/// `#[roplat_msg]` proc macro.
pub use roplat_msg;
/// `#[system]` proc macro.
pub use system;
/// `system_item!` function-like macro.
pub use system_item;
/// Re-export for compatibility: `async_trait`.
pub use async_trait;
/// Launch/config sub-crate re-export.
pub use roplat_launch;
/// Re-export for compatibility: `serde`.
pub use serde;
/// Re-export for compatibility: `serde_json`.
pub use serde_json;
/// Re-export for compatibility: `serde_yaml`.
pub use serde_yaml;