🦞
Rustで外部コマンドでパイプを使う方法
以下のような感じでできる。テキストファイルを入力にすることもできるみたい。
use std::process::{Command, Stdio};
use std::fs::File;
fn main() {
// echo '1+2+3+4' | bc
let echo = Command::new("echo")
.arg("1+2+3+4")
.stdout(Stdio::piped())
.spawn()
.unwrap();
let bc1 = Command::new("bc")
.stdin(Stdio::from(echo.stdout.unwrap()))
.output()
.unwrap();
println!("{}", String::from_utf8_lossy(&bc1.stdout)); // 10
// (1+2+3+4)*5
let file = File::open("expression.txt").unwrap();
let bc2 = Command::new("bc")
.stdin(file)
.output()
.unwrap();
println!("{}", String::from_utf8_lossy(&bc2.stdout)); // 50
}
参考
Discussion