Иногда, например, при чтении какого-либо файла конфигурации, вы читаете путь к файлу, введенный пользователем, не проходя через оболочку (например, вы получаете ~/test
).
Как Option 2
ниже:пишу в тестовый файл в домашнем каталоге пользователя, мне интересно, есть ли что-то более идиоматическое, чем Option 1
.
use std::env::var;
use std::fs::File;
use std::io::prelude::*;
use std::path::Path;
fn write_to(path: &Path) {
let mut f = File::create(path).unwrap();
f.write_all("Hi".as_bytes()).unwrap();
}
fn main() {
// Option 1
let from_env = format!("{}/test", var("HOME").unwrap());
let with_var = Path::new(&from_env);
// Create $HOME/test
write_to(with_var);
// Option 2
let with_tilde = Path::new("~/test");
// Create the test file in current directory, provided a directory ./~ exists
write_to(with_tilde);
}
Примечание : unwrap()
используется здесь, чтобы сохранить пример коротким.Должна быть некоторая обработка ошибок в рабочем коде.