Can't this loop be `for ch in s.iter() { .. }`? Or, 
```rust
let mut it = s.iter();
for ch in it { ... } 
if it.next().is_none() && rdr.eof() { ... }
```
?