Simple and modular write-ahead-logging implementation.
Examples
use ;
use block_on;
let mut loader = new;
loader.file_nbit.block_nbit;
// Start with empty WAL (truncate = true).
let store = new.unwrap;
let mut wal = block_on.unwrap;
// Write a vector of records to WAL.
for f in wal.grow.into_iter
// Load from WAL (truncate = false).
let store = new.unwrap;
let mut wal = block_on.unwrap;
// We saw some log playback, even there is no failure.
// Let's try to grow the WAL to create many files.
let ring_ids = wal.grow
.into_iter.map.;
// Then assume all these records are not longer needed. We can tell WALWriter by the `peel`
// method.
block_on.unwrap;
// There will only be one remaining file in ./walfiles.
let store = new.unwrap;
let wal = block_on.unwrap;
// After each recovery, the ./walfiles is empty.