pub trait VarIntRead {
// Required methods
fn read_var_u64(&mut self) -> Result<u64>;
fn read_var_u32(&mut self) -> Result<u32>;
// Provided methods
fn read_var_i64(&mut self) -> Result<i64> { ... }
fn read_var_i32(&mut self) -> Result<i32> { ... }
}