Would it not make more sense for `scan!` or `read!` to read from an object of type `Read` or `BufRead` rather than `Iterator<Item=u8>`?