我在 Rust 中的标准输入方面遇到了问题。我正在尝试处理来自 Linux 终端上的管道的标准输入,例如 grep 之类的东西。
echo "lorem ipsum" | grep <text>
Run Code Online (Sandbox Code Playgroud)
我在 Rust 中使用这个:
fn load_stdin() -> Result<String> {
let mut buffer = String::new();
let stdin = stdin();
stdin.read_line(&mut buffer)?;
return Ok(buffer);
}
Run Code Online (Sandbox Code Playgroud)
但问题是,如果我没有引入任何管道数据,系统会提示我写入,我宁愿返回 Err。
所以基本上,如果我做类似的事情:
ls | cargo run
user@machine: ~ $
Run Code Online (Sandbox Code Playgroud)
一切都很好。但如果我不通过管道传输任何标准输入:
cargo run
Run Code Online (Sandbox Code Playgroud)
程序暂停并等待用户输入。