sim_lib_journal/
replay.rs1use crate::{JournalEntry, JournalError, StoredState, verify::verify_state};
2
3#[derive(Clone, Debug, PartialEq, Eq)]
4pub struct Replay {
5 entries: Vec<JournalEntry>,
6 cursor: usize,
7}
8
9impl Iterator for Replay {
10 type Item = JournalEntry;
11 fn next(&mut self) -> Option<Self::Item> {
12 let item = self.entries.get(self.cursor).cloned();
13 self.cursor += usize::from(item.is_some());
14 item
15 }
16}
17
18pub fn replay(state: StoredState) -> Result<Replay, JournalError> {
19 let verified = verify_state(&state)?;
20 Ok(Replay {
21 entries: verified.entries,
22 cursor: 0,
23 })
24}