У меня есть функция, которая получает 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()
при необходимости, работаявместо этого по существу только одна ссылка на экземпляр.
Справедливо ли сказать, что один из этих вариантов является «лучшим» способом сделать это?Или есть другие варианты, как это можно сделать к лучшему?