Каков рекомендуемый способ создания нескольких путей, начинающихся с одного и того же родительского каталога? - PullRequest
0 голосов
/ 30 января 2019

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

Справедливо ли сказать, что один из этих вариантов является «лучшим» способом сделать это?Или есть другие варианты, как это можно сделать к лучшему?

1 Ответ

0 голосов
/ 30 января 2019

Выезд Path::join().Он объединяет .clone() и .push() в один шаг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...