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);
}