Command::new(format!("git -C {} status", dir.as_path().display().to_string()));
Run Code Online (Sandbox Code Playgroud)
我正在使用上面的代码将我的PathBuf
变量转换为 aString
,但这是最好的方法吗?有没有一种方法可以使用PathBuf
变量而不转换它?
您的示例运行可执行文件git -C $dir status
,不向该可执行文件传递任何参数。它会尽快出错spawn()
,因为这样一个奇怪命名的文件不在你的PATH
.
相反,运行git
传递你的参数:
Command::new("git").arg("-C").arg(dir).arg("status")
Run Code Online (Sandbox Code Playgroud)
这也使问题变得毫无意义,因为没有必要进行转换。