Module durable

Module durable 

Source
Expand description

Checkpoint wrapper that persists a collection to block storage.

Durable<T> wraps any Serialize + DeserializeOwned value (typically a collection’s state snapshot) and provides checkpoint() and restore() to write and read the inner value from a BlockLease.

§Checkpoint format

Block 0:     [header]  magic: "DCHK" (4) | version: u32 (4) | data_len: u64 (8) | padding (496)
Block 1..N:  [data]    postcard-serialized value, zero-padded to 512-byte boundaries

§Example

use grafos_collections::durable::Durable;
use grafos_std::block::BlockBuilder;
use serde::{Serialize, Deserialize};

#[derive(Serialize, Deserialize, Debug, PartialEq)]
struct State { counter: u64 }

let lease = BlockBuilder::new().acquire()?;
let durable = Durable::new(State { counter: 42 }, lease);
durable.checkpoint()?;

let lease = durable.into_block_lease();
let restored: Durable<State> = Durable::restore(lease)?;
assert_eq!(restored.inner().counter, 42);

Structs§

Durable
A wrapper that checkpoints its inner value to block storage.