Skip to main content

DeltaCrdt

Trait DeltaCrdt 

Source
pub trait DeltaCrdt: CrdtMerge {
    type Delta: Clone + Send + 'static;

    // Required methods
    fn take_delta(&mut self) -> Option<Self::Delta>;
    fn merge_delta(&mut self, delta: &Self::Delta);
}
Expand description

Optional delta-CRDT layer: emit a small “delta” describing the last local change and merge incoming deltas into the full state.

Phase 8.C of docs/full-port-plan.md. CRDTs that implement DeltaCrdt participate in delta-gossip — the Replicator ships Self::Delta to peers instead of the full state, dramatically reducing wire traffic for hot keys.

CRDTs whose state is small (counters, flags) can implement this trivially with Delta = Self. Sets / maps emit a sub-state containing only the keys / tags that changed.

Required Associated Types§

Source

type Delta: Clone + Send + 'static

Per-CRDT delta type — typically Self for small CRDTs, a sub-state for set / map shapes.

Required Methods§

Source

fn take_delta(&mut self) -> Option<Self::Delta>

Take and clear the accumulated local delta. Returns None if no local change has happened since the last call.

Source

fn merge_delta(&mut self, delta: &Self::Delta)

Merge an incoming delta into local state.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§