在 Rust 的命令调用中使用 PathBuf 的最佳方法是什么?

Jak*_*and 1 string path rust

Command::new(format!("git -C {} status", dir.as_path().display().to_string()));
Run Code Online (Sandbox Code Playgroud)

我正在使用上面的代码将我的PathBuf变量转换为 aString,但这是最好的方法吗?有没有一种方法可以使用PathBuf变量而不转换它?

Jef*_*ett 5

您的示例运行可执行文件git -C $dir status,不向该可执行文件传递任何参数。它会尽快出错spawn(),因为这样一个奇怪命名的文件不在你的PATH.

相反,运行git传递你的参数:

Command::new("git").arg("-C").arg(dir).arg("status")
Run Code Online (Sandbox Code Playgroud)

这也使问题变得毫无意义,因为没有必要进行转换。