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