我有一个接收PathBuf
的函数,它在该PathBuf
的路径内创建了一堆文件和目录。例如,该函数获取foo/bar
,它将创建目录/文件,例如foo/bar/bazinga
和foo/bar/foo
。
我可以使用fs::create_dir[_all](path: PathBuf)
并为我要创建的每个文件夹/文件创建一个PathBuf
实例。但是,创建这样的实例意味着我必须克隆传入的PathBuf
:
pub fn generate(&self, mut path: PathBuf) -> Result<()> {
let dir_to_be_created_path = path.clone();
dir_to_be_created_path.push("bazinga");
Ok(())
}
另一种选择是改为使用&mut PathBuf
并根据需要使用push()
和pop()
,实际上只使用一个实例引用。
可以公平地说,这些选择之一是“更好”的方式吗?还是有其他选择可以更好地做到这一点?