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

use*_*770 4 rust

我需要包含在$HOME主目录的路径中的路径。该函数home_dir似乎正是这样做的,但已被弃用。我应该在它的位置使用什么?

文档是这样说的:

1.29.0 后已弃用:此函数的行为是意外的,可能不是您想要的。考虑使用 crates.io 中的 crate。

我应该使用什么类型的板条箱?标准 Rust 真的没有替代品吗?

soc*_*soc 10

来自dirs板条箱。

请注意,包提供了操作系统规则定义的许多标准目录的路径,而不仅仅是主目录:

$HOME经验表明,该板条箱提供的其他功能之一可以更好地满足90% 的需求。

如果您的需求更复杂,例如计算特定应用程序或项目的缓存、配置等路径,请考虑使用目录crate。


Ibr*_*med 5

home板条箱。

home_dir标准库提供的定义不正确,因为它依赖于$HOME环境变量,在Windows中基本没有意义。这会导致令人惊讶的情况,其中 Rust 程序会根据它是否在 Unix 仿真环境下运行而表现不同。Cargo 和 rustup 都不使用标准库定义——而是使用这里的定义。

有关于带回标准库的讨论home_dir,但现在homecrate 可能是你最好的选择。它提供了规范的定义home_dircargo_home以及rustup_home

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