我想要一种打印带有参数的命令的方法。在我的实际情况下,这些参数已生成,我想查看我们将要运行的命令。
我正在尝试这样做:
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]: borrowed value does not live long enough
--> src/main.rs:4:13
|
4 | let x = Command::new("sh").arg("2");
| ^^^^^^^^^^^^^^^^^^ - temporary value dropped here while still borrowed
| |
| temporary value does not live long enough
...
10 | }
| - temporary value needs to live until here
|
= note: consider using a `let` binding to increase its lifetime
如果不添加上面的.arg("2")
,我可以使它正常工作,但这对我的用例没有帮助。
关于stackoverflow的所有其他示例似乎都没有帮助我解决这个问题。
答案 0 :(得分:3)
Command::arg
通过可变引用接受self
,因此您需要在调用Command
之前将Command::new
返回的arg
存储在变量中,否则{ {1}}将在语句末尾删除。 (理论上,编译器可以像在其他情况下一样在此处使用隐藏变量,但是从Rust 1.29开始,它不会使用它。)
Command