rust 如何找到Linux主目录的路径?

yx2lnoni  于 2023-04-06  发布在  Linux
关注(0)|答案(3)|浏览(280)

我需要包含在$HOME中的路径,即主目录的路径。函数home_dir似乎可以做到这一点,但已被弃用。我应该使用什么来代替它?
文档是这样说的:
自1.29.0起弃用:此函数的行为是意外的,可能不是您想要的。请考虑使用www.example.com中的cratecrates.io。
我应该用什么类型的crate来代替?在标准Rust中真的没有替代品吗?

py49o6xq

py49o6xq1#

home板条箱。
标准库提供的home_dir的定义是不正确的,因为它依赖于$HOME环境变量,而$HOME在Windows中基本上没有意义。这导致了令人惊讶的情况,即Rust程序会根据是否在Unix仿真环境下运行而表现不同。Cargo和rustup都没有使用标准库定义-而是使用这里的定义。
discussionhome_dir带回标准库,但现在home crate可能是您的最佳选择。它提供了home_dircargo_homerustup_home的规范定义:

match home::home_dir() {
    Some(path) => println!("{}", path.display()),
    None => println!("Impossible to get your home dir!"),
}
bpsygsoo

bpsygsoo2#

dirs板条箱。
请注意,crate提供了操作系统规则定义的许多标准目录的路径,而不仅仅是home目录:
经验表明,90%的$HOME请求可以通过这个crate提供的其他函数得到更好的服务。
如果你的需求更复杂,例如计算缓存,配置等,为特定的应用程序或项目的路径,考虑使用directories机箱代替。

6tdlim6h

6tdlim6h3#

simple-home-dir板条箱。

use simple_home_dir::*;

fn main() {
    let home = home_dir().unwrap();
    println!("{:?}", home)
}

相关问题