pub trait Input {
fn peek(&mut self, state: &State, offset: usize) -> Option<char>;
fn lines<'a>(&'a mut self, state: &'a mut State) -> Lines<'a>ⓘ;
fn read(&mut self, state: &mut State) -> Option<char> { ... }
fn read_offset(&mut self, state: &mut State, offset: usize) -> usize { ... }
fn skip_line(&mut self, state: &mut State) { ... }
fn peek_line(&mut self, state: &State) -> Option<Line> { ... }
fn read_line(&mut self, state: &mut State) -> Option<Line> { ... }
fn read_whitespace(&mut self, state: &mut State) -> Option<String> { ... }
fn skip_whitespaces(&mut self, state: &mut State) { ... }
fn is_done(&mut self, state: &State) -> bool { ... }
fn can_peek(&mut self, state: &State, offset: usize) -> bool { ... }
}