【问题标题】:Where should I save my config files in Rust我应该在哪里保存我在 Rust 中的配置文件
【发布时间】:2020-02-20 18:55:15
【问题描述】:

我需要保留信息,例如用户对我的程序的配置及其输入。在 Linux 和 Windows 上保存这些文件的最佳位置是哪里?

这是一个 rust-cargo 程序,将安装到~/.cargo/bin 以供使用。我试图将我的文件保存到~/.cargo,但我不知道这是否合适,因为我是 Rust 的新手。

【问题讨论】:

  • 有几个库提供 XDG 路径,例如通常与用户配置相关的路径,例如 github.com/soc/directories-rs。这是你要找的吗?
  • 如果 Rust 中没有标准位置,我会使用它,但我更愿意自己管理它们,而不是依赖其他库。
  • 没有理由仅仅因为应用程序是用 Rust 编写的,就需要另一个标准。如果您不想使用 lib,那么您只需阅读 $XDG_CONFIG_HOME env var。这些库主要用于回退、Windows 兼容性等。
  • 我添加了 linux 标签,因为这个问题显然与这个操作系统有关。如果您正在寻找独立于操作系统的答案,OP 可以随时恢复。

标签: linux windows rust rust-cargo


【解决方案1】:

用 Rust 编写的应用程序没有什么特别之处。与运行时附带的其他解决方案相反,Rust 构建依赖于标准环境和实践的普通应用程序。系统的正常规则适用于配置位置。

在 linux 上,您应该首先查询 XDG 路径,然后在 $HOME 不可用时使用它作为备用。

你可以这样做:

use std::env::var;

fn main() {
    let config_home = var("XDG_CONFIG_HOME")
        .or_else(|_| var("HOME").map(|home|format!("{}/.config", home)));
    println!("{:?}", config_home);
}

请注意,有几个库会为您完成这项工作,并负责支持备用操作系统。

我不会链接到它们,因为它们很多而且它们经常更改,但是如果您搜索“rust 配置目录”,您最喜欢的搜索引擎会将您定向到最受欢迎的搜索引擎。

【讨论】:

  • 我要补充一点,这甚至适用于货物扩展或货物分布式二进制文件(这是我唯一希望放在~./cargo/bin/ 中的二进制文件)。可以将其与例如如何进行比较ripgreprustfmt 接近这个
猜你喜欢
  • 2023-03-25
  • 1970-01-01
  • 2016-10-06
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-18
  • 1970-01-01
相关资源
最近更新 更多