小编Dig*_*yan的帖子

使用 Rust 处理管道数据标准输入

我在 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)

程序暂停并等待用户输入。

stdin rust

3
推荐指数
1
解决办法
1729
查看次数

标签 统计

rust ×1

stdin ×1