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) -> DbResult<Config> { ... }
fn incomplete_write(&self) -> DbResult<bool> { ... }
fn begin_transaction(&mut self) -> DbResult<TxHandle> { ... }
}