【发布时间】:2021-03-10 20:37:35
【问题描述】:
您好,我希望能够将包含 json 行的文件读取到这样的 rust 应用程序中
$ cargo run < users.json
然后将这些行作为迭代器读取。到目前为止,我有这段代码,但我不希望文件被硬编码,而是像上面一行一样通过管道传输到进程中。
use std::fs::File;
use std::io::{self, prelude::*, BufReader};
fn main() -> io::Result<()> {
let file = File::open("users.json")?;
let reader = BufReader::new(file);
for line in reader.lines() {
println!("{}", line);
}
Ok(())
}
我刚刚解决了这个问题
use std::io::{self, BufRead};
fn main() {
let stdin = io::stdin();
for line in stdin.lock().lines() {
println!("{}", line.unwrap());
}
}
【问题讨论】:
-
如果你像
myapp < users.json这样称呼你的应用程序,那么这个管道基本上是由操作系统制作的,文件的内容将在你的应用程序的标准输入中,只需从控制台读取它。 -
但是在
cargo run的情况下,我不确定货物转发文件内容到您的应用程序中。你可以尝试阅读std::io::stdin,也许你会明白
标签: rust