Как лучше всего реализовать функцию change_file_name
?
let path = Path::new("/path/to/file.rs");
let new_path = change_file_name(&path, "new_file_name") // -> "/path/to/new_file_name.rs"
Как лучше всего реализовать функцию change_file_name
?
let path = Path::new("/path/to/file.rs");
let new_path = change_file_name(&path, "new_file_name") // -> "/path/to/new_file_name.rs"
Path
/PathBuf
и использовать set_file_name()
/with_file_name()
. Хотя вам, конечно, нужно добавить логику для сохранения расширения. 15.02.2021 Возьмите что-то, на что можно сослаться как Path
, затем удалите существующее имя файла, заменив его и сохранив необязательное расширение:
use std::path::{Path, PathBuf};
fn change_file_name(path: impl AsRef<Path>, name: &str) -> PathBuf {
let path = path.as_ref();
let mut result = path.to_owned();
result.set_file_name(name);
if let Some(ext) = path.extension() {
result.set_extension(ext);
}
result
}
fn main() {
let path = "/path/to/file.rs";
let new_path = change_file_name(path, "new_file_name");
assert_eq!(new_path, Path::new("/path/to/new_file_name.rs"));
}
Смотрите также: