8 个不稳定版本 (3 个重大更改)

0.4.1 2024年7月24日
0.4.0 2024年7月23日
0.3.2 2024年6月22日
0.2.2 2023年4月17日
0.1.0 2022年7月22日

#163 in #环境变量

Download history 46/week @ 2024-04-21 1/week @ 2024-04-28 1/week @ 2024-05-19 1/week @ 2024-06-09 346/week @ 2024-06-16 203/week @ 2024-06-23 8/week @ 2024-06-30 10/week @ 2024-07-07 365/week @ 2024-07-21 74/week @ 2024-07-28

每月下载量 449
2 个 crate 中使用 (via envir)

MIT 许可证

11KB
218

这些过程宏帮助您实现 envir::Serializeenvir::Deserialize 特性。

属性

默认情况下,这些宏使用大写字段名作为环境变量名。

use envir::Deserialize;

#[derive(envir::Deserialize, Debug)]
struct Config {
    home: String,
}

let config = Config::from_env();
dbg!(config);
$ cargo run
[src/main.rs:12] config = Ok(
    Config {
        home: "/home/sanpi",
    }
)

容器

  • prefix: 将此前缀设置到字段名。
use envir::Deserialize;

#[derive(envir::Deserialize, Debug)]
#[envir(prefix = "APP_")]
struct Config {
    dir: String,
}

let config = Config::from_env();
dbg!(config);
$ export APP_DIR=~/.config/app
$ cargo run
[src/main.rs:12] config = Ok(
    Config {
        dir: "/home/sanpi/.config/app",
    }
)

字段

  • name: 使用此名称代替环境变量的字段名。如果 prefix 已定义,则也添加到该名称前;
  • export_with: 使用此函数导出此字段。给定的函数必须可调用为 fn (T) -> HashMap<String, String<>;
  • load_with: 使用此函数加载此字段。给定的函数必须可调用为 fn (HashMap<String, String<>) -> envir::Result<T, T<>;
  • noprefix: 对于此字段不添加 prefix
  • nested: 此字段应该递归地进行序列化和反序列化。
use envir::Deserialize;

#[derive(envir::Deserialize, Debug)]
#[envir(prefix = "APP_")]
struct Config {
    dir: String,
}

let config = Config::from_env();
dbg!(config);
$ export APP_DIR=~/.config/app
$ cargo run
[src/main.rs:12] config = Ok(
    Config {
        dir: "/home/sanpi/.config/app",
    }
)

依赖关系

~0.6–1MB
~23K SLoC