Skip to main content

graphrefly_graph/
lib.rs

1//! `GraphReFly` Graph container — sugar layer over `graphrefly_core::Core`
2//! with named namespace, mount/unmount composition, `describe()` JSON
3//! introspection, and `observe()` sink-style message tap.
4//!
5//! # Status
6//!
7//! M2 complete: `Graph` container, mount/unmount, namespace resolution,
8//! `describe()` / `observe()`, snapshot round-trip (see migration-status
9//! D276+). Deferred presentation-tier observe modes stay binding-side;
10//! open substrate gaps are listed in `docs/porting-deferred.md`.
11//!
12//! Binding-side / post-1.0 (not this crate): render formats (pretty /
13//! mermaid / d2), DS-14 `mutate()` factory, cross-Core mount.
14//!
15//! # Crate lints
16//!
17//! `#![forbid(unsafe_code)]` per workspace policy.
18
19#![forbid(unsafe_code)]
20#![warn(rust_2018_idioms, unreachable_pub)]
21#![warn(clippy::pedantic)]
22#![allow(clippy::module_name_repetitions, clippy::missing_errors_doc)]
23
24mod debug;
25mod describe;
26mod graph;
27mod mount;
28mod observe;
29mod profile;
30mod snapshot;
31
32pub use debug::DebugBindingBoundary;
33pub use describe::{
34    DescribeSink, DescribeValue, EdgeDescribe, GraphDescribeOutput, NodeDescribe, NodeStatus,
35    NodeTypeStr, ReactiveDescribeHandle,
36};
37pub use graph::{Graph, GraphInner, NameError, PathError, RemoveError, SignalKind};
38pub use mount::{GraphRemoveAudit, MountError};
39pub use observe::{GraphObserveAll, GraphObserveAllReactive, GraphObserveOne, ObserveSub};
40pub use profile::{GraphProfileOptions, GraphProfileResult, Hotspots, NodeProfile, OrphanKind};
41pub use snapshot::{
42    GraphPersistSnapshot, NodeFactory, NodeSlice, NodeSnapshotStatus, SnapshotBuilder,
43    SnapshotError,
44};