我的Rust程序应该从stdin或从S3上存储的文件中读取。目前我有这样的东西:
fn load_from_s3(url: &String) -> impl Read {
// ...
BufReader::new(some_stream)
}
// ...
let reader = match cli.value_of("s3_url") {
Some(url) => csv::Reader::from_reader(load_from_s3(&url.to_string())),
None => {
let lock = io::stdin().lock();
csv::Reader::from_reader(lock)
}
};
Some
分支警告我有关this is found to be of type csv::reader::Reader<impl std::io::Read>
的信息。 None
分支给我错误expected opaque type, found struct std::io::StdinLock
。我对Rust还是很陌生,无法弄清楚如何正确选择类型。