Rust:将标准输出写入缓冲区或字符串

Rust: Write stdout into a buffer or String

我正在尝试生成一个进程并将其标准输出记录到一个文件中。

我的尝试是:

let mut log = String::new();

let output = Command::new("git")
        .current_dir(&cwd)
        .arg("pull")
        .arg("--rebase=merges")
        .output()
        .expect("Error doing git pull");

log.push_str("\nOUTPUT\n");
log.push_str(&output.stdout);

但这给出了类型不匹配的错误。我如何捕获 output.stdout 以写入字符串,或更好地写入文件?

谢谢!

Command 输出表示为一系列字节。使用 std::str::from_utf8 将其转换为 str:

use std::str;
log.push_str(match str::from_utf8(&output.stdout) {
    Ok(val) => val,
    Err(_) => panic!("got non UTF-8 data from git"),
});

Try it in the playground