It should be possible to implement `Reader` for all `T where T: Iterator<Item = char>`. This will need some extra allocations for lookahead though.