#directory #path #xdg #folder #linux-macos #app-dirs #basedir

dirs-next

一个轻量级的底层库,通过利用 Linux 的 XDG 基础/用户目录规范、Windows 的已知文件夹 API 以及 macOS 的标准目录指南机制,为 Linux、Windows、macOS 和 Redox 提供平台特定的目录标准位置,用于配置、缓存和其他数据

  • 安装
  • API 参考
  • GitHub 仓库 (xdg-rs)
  • 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 2020 年 5 月 6 日

    文件系统 中排名 #51

    Download history 440589/week @ 2024-03-31 417446/week @ 2024-04-07 426636/week @ 2024-04-14 444808/week @ 2024-04-21 413346/week @ 2024-04-28 407691/week @ 2024-05-05 448527/week @ 2024-05-12 434421/week @ 2024-05-19 415614/week @ 2024-05-26 436869/week @ 2024-06-02 437560/week @ 2024-06-09 444549/week @ 2024-06-16 437727/week @ 2024-06-23 403866/week @ 2024-06-30 451349/week @ 2024-07-07 417852/week @ 2024-07-14

    每月下载量 1,737,409
    用于 3,163 个 Crates(直接使用 231 个)

    MIT/Apache

    52KB
    514

    crates.io API documentation

    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 已废弃 🞈

    构建

    如果通过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-2.0许可证定义的,您有意提交以包含在作品中的任何贡献,都将如上双许可,不附加任何额外条款或条件。

    依赖

    ~2–455KB