【发布时间】:2019-06-13 12:33:29
【问题描述】:
有时,例如在读取某个配置文件时,您无需通过 shell 即可读取用户输入的文件路径(例如,您会得到~/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() 以保持示例简短。生产代码中应该有一些错误处理。
【问题讨论】:
标签: path rust directory home-directory