4 个稳定版本
2.0.0 | 2020 年 10 月 22 日 |
---|---|
1.0.2 | 2020 年 10 月 13 日 |
1.0.1 | 2020 年 5 月 23 日 |
1.0.0 | 2020 年 5 月 17 日 |
0.0.0 |
|
在 文件系统 中排名 #51
每月下载量 1,737,409
用于 3,163 个 Crates(直接使用 231 个)
52KB
514 行
dirs-next
注意:这是一个已废弃的 dirs
Crates 的分支。
还有一个中层的姐妹库,directories-next。
简介
- 一个具有最小 API 的轻量级库
- 提供平台特定的、用户可访问的位置
- 用于检索和存储配置、缓存和其他数据
- 在 Linux、Redox、Windows(≥ Vista)、macOS 和其他平台上。
该库通过利用 Linux 和 Redox 的 XDG 基础目录 和 XDG 用户目录 规范
平台
此库是用 Rust 编写的,并支持 Linux、Redox、macOS 和 Windows。还支持其他平台;它们使用 Linux 习惯。
Rust 版本最低要求
最低要求的 Rust 版本是 1.34.0
。
在主版本和次要版本中,我们可能会提升Rust的版本(在x
/y
中,即在x.y.z
)。更改Rust版本将在CHANGELOG中进行记录。
示例
由Alice用户运行的库
dirs_next::home_dir();
// Lin: Some(/home/alice)
// Win: Some(C:\Users\Alice)
// Mac: Some(/Users/Alice)
dirs_next::audio_dir();
// Lin: Some(/home/alice/Music)
// Win: Some(C:\Users\Alice\Music)
// Mac: Some(/Users/Alice/Music)
dirs_next::config_dir();
// Lin: Some(/home/alice/.config)
// Win: Some(C:\Users\Alice\AppData\Roaming)
// Mac: Some(/Users/Alice/Library/Application Support)
dirs_next::executable_dir();
// Lin: Some(/home/alice/.local/bin)
// Win: None
// Mac: None
设计目标
- dirs-next库是一个低级crate,旨在根据操作系统的规则或约定提供标准目录的路径。如果您的需求更加复杂,例如计算特定应用程序或项目的缓存、配置等路径,请考虑使用directories-next。
- 此库不会创建目录或检查它们的存在。库仅提供有关某个目录路径“应该”是什么的信息。如何使用这些信息是由开发者根据每个应用程序的需求决定的。
- 此库故意专注于仅提供关于用户可写目录的信息。在一种操作系统中返回指向用户级别可写目录的路径,而在另一种操作系统中返回系统级别只读目录的路径,这种做法带来的好处不足以抵消由此产生的混淆和意外失败。
executable_dir
被指定为提供二进可写目录的路径。
由于此类目录仅在Linux上常见,因此它在macOS和Windows上返回None
。font_dir
被指定为提供字体可写目录的路径。
由于此类目录仅在Linux和macOS上存在,因此它在Windows上返回None
。runtime_dir
被指定为提供非必需运行时数据的目录。要求在用户登录时创建此目录,仅对用户本身可访问,在用户注销时删除,并支持操作系统的所有文件系统功能。
由于此类目录仅在Linux上常见,因此它在macOS和Windows上返回None
。
功能
如果您想计算自己应用程序或项目的缓存、配置或数据目录的位置,请使用directories-next项目的ProjectDirs
。
函数名 | Linux/Redox上的值 | Windows上的值 | macOS上的值 |
---|---|---|---|
home_dir |
Some($HOME) |
Some({FOLDERID_Profile}) |
Some($HOME) |
cache_dir |
Some($XDG_CACHE_HOME) 或Some($HOME /.cache) |
Some({FOLDERID_LocalAppData}) |
Some($HOME /Library/Caches) |
config_dir |
Some($XDG_CONFIG_HOME) 或Some($HOME /.config) |
Some({FOLDERID_RoamingAppData}) |
Some($HOME /Library/Application Support) |
data_dir |
Some($XDG_DATA_HOME) 或Some($HOME /.local/share) |
Some({FOLDERID_RoamingAppData}) |
Some($HOME /Library/Application Support) |
data_local_dir |
Some($XDG_DATA_HOME) 或Some($HOME /.local/share) |
Some({FOLDERID_LocalAppData}) |
Some($HOME /Library/Application Support) |
executable_dir |
Some($XDG_BIN_HOME /../bin) 或 Some($XDG_DATA_HOME /../bin) 或 Some($HOME /.local/bin) |
无 |
无 |
运行时目录 |
Some($XDG_RUNTIME_DIR) 或 None |
无 |
无 |
音频目录 |
Some(XDG_MUSIC_DIR) 或 None |
Some({文件夹ID_Music}) |
Some($HOME /Music/) |
桌面目录 |
Some(XDG_DESKTOP_DIR) 或 None |
Some({文件夹ID_Desktop}) |
Some($HOME /Desktop/) |
文档目录 |
Some(XDG_DOCUMENTS_DIR) 或 None |
Some({文件夹ID_Documents}) |
Some($HOME /Documents/) |
下载目录 |
Some(XDG_DOWNLOAD_DIR) 或 None |
Some({文件夹ID_Downloads}) |
Some($HOME /Downloads/) |
字体目录 |
Some($XDG_DATA_HOME /fonts/) 或 Some($HOME /.local/share/fonts/) |
无 |
Some($HOME /Library/Fonts/) |
图片目录 |
Some(XDG_PICTURES_DIR) 或 None |
Some({文件夹ID_Pictures}) |
Some() |
公共目录 |
Some(XDG_PUBLICSHARE_DIR) 或 None |
Some({文件夹ID_Public}) |
Some() |
模板目录 |
Some(XDG_TEMPLATES_DIR) 或 None |
Some({文件夹ID_Templates}) |
无 |
视频目录 |
Some(XDG_VIDEOS_DIR) 或 None |
Some({文件夹ID_Videos}) |
Some() |
比较
在Rust生态系统中有其他尝试类似或相关功能的crate。以下是它们的概述,并结合了指导此crate设计的属性评级。
请谨慎对待此表格:不同的crate可能非常适合您的特定用例。
库 | 状态 | Lin | Mac | Win | Base | User | Proj | Conv |
---|---|---|---|---|---|---|---|---|
app_dirs |
未维护 | ✔ | ✔ | ✔ | 🞈 | ✖ | ✔ | ✖ |
app_dirs2 |
维护中 | ✔ | ✔ | ✔ | 🞈 | ✖ | ✔ | ✖ |
dirs-next | 开发中 | ✔ | ✔ | ✔ | ✔ | ✔ | ✖ | ✔ |
directories-next |
开发中 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
s_app_dir |
未维护? | ✔ | ✖ | 🞈 | ✖ | ✖ | 🞈 | ✖ |
standard_paths |
维护中 | ✔ | ✖ | ✔ | ✔ | ✔ | ✔ | ✖ |
xdg |
维护中 | ✔ | ✖ | ✖ | ✔ | ✖ | ✔ | 🞈 |
xdg-basedir |
未维护? | ✔ | ✖ | ✖ | ✔ | ✖ | ✖ | 🞈 |
xdg-rs |
已废弃 | ✔ | ✖ | ✖ | ✔ | ✖ | ✖ | 🞈 |
- Lin:Linux支持
- Mac:macOS支持
- Win:Windows支持
- Base:支持通用基本目录
- User:支持用户目录
- Proj:支持特定项目的基目录
- Conv:遵循运行在其上的操作系统的命名约定
构建
如果通过rustup安装了必要的工具链,则可以交叉编译此库。这有助于确保更改没有在不同平台上破坏代码。
以下命令将在Linux、macOS和Windows上构建此库
cargo build --target=x86_64-unknown-linux-gnu
cargo build --target=x86_64-pc-windows-gnu
cargo build --target=x86_64-apple-darwin
cargo build --target=x86_64-unknown-redox
许可
根据您的选择,许可方式为以下之一
- Apache License,版本2.0(LICENSE-APACHE或http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或http://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交以包含在作品中的任何贡献,都将如上双许可,不附加任何额外条款或条件。
依赖
~2–455KB