我正在尝试通过实现Iterator
特征来实现“读取行”功能。
在这里,我在结构内部拥有Bytes<BufReader<File>>
。对于next
函数,我希望遍历迭代器以找到b'\n'
。
use std::io::BufReader;
struct MyStringLineBufReader {
bytes_iter: std::io::Bytes<BufReader<std::fs::File>>,
}
impl Iterator for MyStringLineBufReader {
type Item = (String);
fn next(&mut self) -> Option<<Self as Iterator>::Item> {
let mut bytes: Vec<u8> = Vec::new();
for b in self.bytes_iter {
let b = b.unwrap();
if b == b'\n' {
break;
} else {
bytes.push(b)
}
}
return Some(String::from_utf8(bytes).unwrap());
}
}
代码尚未完成,但是我认为它应该编译。我收到以下消息:
error[E0507]: cannot move out of borrowed content
--> src/lib.rs:12:18
|
12 | for b in self.bytes_iter {
| ^^^^ cannot move out of borrowed content
我不知道该如何解决。