pub trait EvolutionStore: Send + Sync {
// Required methods
fn append_event(&self, event: EvolutionEvent) -> Result<u64, EvolutionError>;
fn scan(
&self,
from_seq: u64,
) -> Result<Vec<StoredEvolutionEvent>, EvolutionError>;
fn rebuild_projection(&self) -> Result<EvolutionProjection, EvolutionError>;
// Provided method
fn scan_projection(
&self,
) -> Result<(Vec<StoredEvolutionEvent>, EvolutionProjection), EvolutionError> { ... }
}