相关:Read file character-by-character in Rust,但那里的答案没有解决如何生成Iterator
以产生文件中的字符的问题。
我正在编写一个带有这样签名的函数:
fn lex(chars: Iterator<Item=char>) -> Tokens {
}
接受char
s的迭代器,并返回另一个迭代器。
我希望能够为此功能编写测试,例如通过在字符串对象上传入调用chars()
的结果。
在我的产品中,在代码上,我想读取一个文本文件并将该文件中的字符传递给我的函数。目前,我并不关心如果文件无效UTF-8会发生什么。
我很乐意更改功能的签名,例如接受Iterator<Item=Result<char, SomeErrorType>>
,但我确实想要按需使用文件,而不是事先阅读整个文件。
如果有帮助,我很乐意在测试中使用BufRead
和io::Cursor
。
我看了Read
上的chars()
,但它不稳定,看起来永远不会稳定。
那么,我如何迭代文件中的字符?