Rust 无法打印process::Command,因为;借来的价值活得不够长。”;

Rust 无法打印process::Command,因为;借来的价值活得不够长。”;,rust,Rust,我想要一种打印命令及其参数的方法。在我的实际案例中,这些参数是生成的,我希望看到我们将要运行的命令 我正在尝试这样做: fn main() { use std::process::Command; let x = Command::new("sh").arg("2"); let y = x.output(); println!("status: {:#?}", x); println!("status: {:#?}", y); } error[E0

我想要一种打印命令及其参数的方法。在我的实际案例中,这些参数是生成的,我希望看到我们将要运行的命令

我正在尝试这样做:

fn main() {
    use std::process::Command;

    let x = Command::new("sh").arg("2");

    let y = x.output();

    println!("status: {:#?}", x);
    println!("status: {:#?}", y);
}
error[E0597]:借入值的有效期不够长
-->src/main.rs:4:13
|
4 |让x=Command::new(“sh”).arg(“2”);
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^-在仍然借用的情况下,临时值被丢弃在此处
|             |
|临时值的寿命不够长
...
10 | }
|-临时价值需要持续到此处
|
=注意:考虑使用“让”绑定来增加其生命周期。
如果不添加上面的
.arg(“2”)
,我可以让它工作,但这对我的用例没有帮助


stackoverflow上的所有其他示例似乎都不能帮助我解决这个问题。

Command::arg
通过可变引用获取
self
,因此在调用
arg
之前,需要将
Command::new
返回的
命令存储在变量中,否则,将在语句末尾删除
命令。(理论上,编译器在这里可以像在其他情况下一样使用隐藏变量,但在Rust 1.29中没有这样做。)

fn main() {
    use std::process::Command;

    let mut x = Command::new("sh");
    x.arg("2");

    let y = x.output();

    println!("status: {:#?}", x);
    println!("status: {:#?}", y);
}