pub trait Reading {
// Required method
fn read_line(&mut self) -> String;
// Provided methods
fn read<T>(&mut self) -> T
where T: FromStr + Default { ... }
fn read_vec<T>(&mut self) -> Vec<T>
where T: FromStr + Default { ... }
}