Skip to main content

DeltaChannel

Struct DeltaChannel 

Source
pub struct DeltaChannel<T, R: Reducer<T>> { /* private fields */ }
Expand description

Delta channel: append-heavy optimization with periodic snapshots

Tracks updates since the last snapshot and can replay writes for restoring from a delta-based checkpoint. The snapshot_frequency controls how often a full snapshot is taken instead of just recording the delta.

Implementations§

Source§

impl<T, R: Reducer<T>> DeltaChannel<T, R>

Source

pub fn new(value: T, snapshot_frequency: usize) -> Self

Create a new delta channel with the given initial value and snapshot frequency

The snapshot frequency is clamped to a minimum of 1.

Source

pub fn replay_writes(&mut self, values: &[T])

Replay a sequence of writes to restore state from a checkpoint

During checkpoint recovery, finds the last Overwrite<T> in the sequence and uses it as the baseline, then applies only the writes after it via the reducer. This implements the design specification for ancestor replay.

Source

pub const fn should_snapshot(&self) -> bool

Check if a snapshot is due based on the update count

Source

pub const fn finish(&mut self)

Mark the channel as finished, forcing a snapshot on the next checkpoint call

This ensures the state is persisted when execution completes.

Trait Implementations§

Source§

impl<T, R> Channel<T> for DeltaChannel<T, R>
where T: Default + Clone + Send + Sync + Serialize + DeserializeOwned + 'static, R: Reducer<T> + Send + Sync + 'static,

Source§

fn update(&mut self, values: Vec<T>) -> bool

Update the channel with new values. Returns true if the value changed.
Source§

fn get(&self) -> &T

Get the current value
Source§

fn consume(&mut self) -> bool

Check if the channel has been consumed (for trigger-based activation)
Source§

fn checkpoint(&self) -> Option<Value>

Create a checkpoint of the current value for persistence
Source§

fn from_checkpoint(value: Value) -> Result<Self, String>

Restore from a checkpoint value Read more
Source§

impl<T: Debug, R: Debug + Reducer<T>> Debug for DeltaChannel<T, R>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T, R> Freeze for DeltaChannel<T, R>
where T: Freeze,

§

impl<T, R> RefUnwindSafe for DeltaChannel<T, R>

§

impl<T, R> Send for DeltaChannel<T, R>
where T: Send, R: Send,

§

impl<T, R> Sync for DeltaChannel<T, R>
where T: Sync, R: Sync,

§

impl<T, R> Unpin for DeltaChannel<T, R>
where T: Unpin, R: Unpin,

§

impl<T, R> UnsafeUnpin for DeltaChannel<T, R>
where T: UnsafeUnpin,

§

impl<T, R> UnwindSafe for DeltaChannel<T, R>
where T: UnwindSafe, R: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more