我需要包含在$HOME中的路径,即主目录的路径。函数home_dir似乎可以做到这一点,但已被弃用。我应该使用什么来代替它?文档是这样说的:自1.29.0起弃用:此函数的行为是意外的,可能不是您想要的。请考虑使用www.example.com中的cratecrates.io。我应该用什么类型的crate来代替?在标准Rust中真的没有替代品吗?
$HOME
home_dir
py49o6xq1#
从home板条箱。标准库提供的home_dir的定义是不正确的,因为它依赖于$HOME环境变量,而$HOME在Windows中基本上没有意义。这导致了令人惊讶的情况,即Rust程序会根据是否在Unix仿真环境下运行而表现不同。Cargo和rustup都没有使用标准库定义-而是使用这里的定义。有discussion将home_dir带回标准库,但现在home crate可能是您的最佳选择。它提供了home_dir,cargo_home和rustup_home的规范定义:
home
cargo_home
rustup_home
match home::home_dir() { Some(path) => println!("{}", path.display()), None => println!("Impossible to get your home dir!"), }
bpsygsoo2#
从dirs板条箱。请注意,crate提供了操作系统规则定义的许多标准目录的路径,而不仅仅是home目录:经验表明,90%的$HOME请求可以通过这个crate提供的其他函数得到更好的服务。如果你的需求更复杂,例如计算缓存,配置等,为特定的应用程序或项目的路径,考虑使用directories机箱代替。
6tdlim6h3#
从simple-home-dir板条箱。
use simple_home_dir::*; fn main() { let home = home_dir().unwrap(); println!("{:?}", home) }
3条答案
按热度按时间py49o6xq1#
从
home
板条箱。标准库提供的
home_dir
的定义是不正确的,因为它依赖于$HOME
环境变量,而$HOME
在Windows中基本上没有意义。这导致了令人惊讶的情况,即Rust程序会根据是否在Unix仿真环境下运行而表现不同。Cargo和rustup都没有使用标准库定义-而是使用这里的定义。有discussion将
home_dir
带回标准库,但现在home
crate可能是您的最佳选择。它提供了home_dir
,cargo_home
和rustup_home
的规范定义:bpsygsoo2#
从dirs板条箱。
请注意,crate提供了操作系统规则定义的许多标准目录的路径,而不仅仅是home目录:
经验表明,90%的
$HOME
请求可以通过这个crate提供的其他函数得到更好的服务。如果你的需求更复杂,例如计算缓存,配置等,为特定的应用程序或项目的路径,考虑使用directories机箱代替。
6tdlim6h3#
从simple-home-dir板条箱。