Skip to main content

Crate graphrefly_structures

Crate graphrefly_structures 

Source
Expand description

GraphReFly reactive data structures (M5.A — D177/D178/D179).

Four reactive structures backed by pluggable backends, integrated at the Core level (no Graph dependency required):

  • ReactiveLog — append-only log with optional ring-buffer cap
  • ReactiveList — ordered list with positional insert/pop
  • ReactiveMap — key-value map with set/delete operations
  • ReactiveIndex — sorted index with primary key lookup + secondary sort

Each structure owns a Core state NodeId and emits DIRTY→DATA snapshots on every mutation. Optional mutation_log companions record typed BaseChange<XxxChange<T>> deltas for op-log changesets (Phase 14).

Default backends use Vec<T> / HashMap<K, V>. imbl-backed persistent backends are deferred until bench evidence justifies (D178).

CRDT-backed variants (yrs / automerge / loro / diamond-types) are post-1.0 work, gated behind feature flags.

Re-exports§

pub use backend::HashMapBackend;
pub use backend::IndexBackend;
pub use backend::IndexRow;
pub use backend::ListBackend;
pub use backend::LogBackend;
pub use backend::MapBackend;
pub use backend::VecIndexBackend;
pub use backend::VecListBackend;
pub use backend::VecLogBackend;
pub use changeset::BaseChange;
pub use changeset::DeleteReason;
pub use changeset::IndexChange;
pub use changeset::Lifecycle;
pub use changeset::ListChange;
pub use changeset::LogChange;
pub use changeset::MapChange;
pub use changeset::Version;
pub use reactive::AppendLogSink;
pub use reactive::AttachOptions;
pub use reactive::AttachStorageHandle;
pub use reactive::IndexEqualsFn;
pub use reactive::IndexOutOfBounds;
pub use reactive::InternFn;
pub use reactive::LogView;
pub use reactive::MapConfigError;
pub use reactive::ReactiveIndex;
pub use reactive::ReactiveIndexOptions;
pub use reactive::ReactiveList;
pub use reactive::ReactiveListOptions;
pub use reactive::ReactiveLog;
pub use reactive::ReactiveLogOptions;
pub use reactive::ReactiveMap;
pub use reactive::ReactiveMapOptions;
pub use reactive::ReactiveSub;
pub use reactive::RetentionPolicy;
pub use reactive::ScanHandle;
pub use reactive::UpsertOptions;
pub use reactive::ViewSpec;

Modules§

backend
Pluggable backend traits for reactive data structures (M5.A — D178).
changeset
Universal change envelope (Phase 14 — DS-14 locked 2026-05-05; M4.A 2026-05-10).
reactive
Reactive data structures — Core-level integration (M5.A — D177/D179).