pub trait LogStore<Data: LogData> {
// Required methods
fn get(&self, key: &Data::Key) -> Option<Data::Value>;
fn remove(&mut self, key: &Data::Key);
fn update(&mut self, key: Data::Key, val: Data::Value);
fn flush(&mut self) -> Result<()>;
fn flush_change(&mut self, key: Data::Key, val: Data::Value) -> Result<()>;
}