テキストを解析する関数を書いていますが、テキストは外部ファイルまたは内部の&str
から来る可能性があります。 parse
機能のように行くことがあります。std :: str :: linesとstd :: io :: linesをどのように組み合わせるか?
fn parse(lines: GenericLinesGenerator) {
for line in lines {
// parse content
}
}
...そして、それは次のように呼び出すことができます。
use std::io::BufReader;
use std::fs::File;
let fin = BufReader::new(File::open("info.txt").expect("not found"));
parse(TransformFromIO(fin.lines()))
または
let content: &'static str = "some\nlong\ntext";
parse(TransformFromStr(content.lines()))
は、このようなparse
機能を実現することが可能です?
impl<B: BufRead> Iterator for io::Lines<B> {
type Item = Result<String>;
}
impl<'a> Iterator for str::Lines<'a> {
type Item = &'a str;
}
あなたが何らかの形でその違いを処理する必要があります。
驚くばかり!ありがとう! – knight42
この種の問題に対して新しい特性を実装する必要はありません。 – WiSaGaN