pub trait Db: Sized {
// Required methods
fn init(location: Config) -> DbResult<Self>;
fn compact_log(&mut self) -> DbResult<()>;
fn get_logger(&self) -> &Logger;
// Provided methods
fn config(&self) -> Config { ... }
fn incomplete_write(&self) -> bool { ... }
fn begin_transaction(&mut self) -> TxHandle { ... }
}