26次发布

0.10.19 2024年5月17日
0.10.15 2024年3月16日
0.10.13 2023年12月31日
0.10.12 2023年10月30日
0.9.4 2020年10月30日

#4配置 中排名

Download history 67420/week @ 2024-05-03 72594/week @ 2024-05-10 76404/week @ 2024-05-17 71327/week @ 2024-05-24 82154/week @ 2024-05-31 75534/week @ 2024-06-07 84088/week @ 2024-06-14 83126/week @ 2024-06-21 80310/week @ 2024-06-28 73848/week @ 2024-07-05 71520/week @ 2024-07-12 78522/week @ 2024-07-19 78575/week @ 2024-07-26 77795/week @ 2024-08-02 79121/week @ 2024-08-09 65420/week @ 2024-08-16

每月 314,982次下载
535 Crates中使用(151 个直接使用)

MIT/Apache

305KB
4K SLoC

Figment ci.svg crates.io docs.rs

Figment是一个半分层配置库,为Rust提供如此自由的配置,简直不可思议。

use serde::Deserialize;

use figment::{Figment, providers::{Format, Toml, Json, Env}};

#[derive(Deserialize)]
struct Package {
    name: String,
    authors: Vec<String>,
    publish: Option<bool>,
    // ... and so on ...
}

#[derive(Deserialize)]
struct Config {
    package: Package,
    rustc: Option<String>,
    // ... and so on ...
}

let config: Config = Figment::new()
    .merge(Toml::file("Cargo.toml"))
    .merge(Env::prefixed("CARGO_"))
    .merge(Env::raw().only(&["RUSTC", "RUSTDOC"]))
    .join(Json::file("Cargo.json"))
    .extract()?;

请参阅文档以获取详细使用指南和信息。

使用方法

将以下内容添加到您的Cargo.toml中,启用所需的内置提供程序

[dependencies]
figment = { version = "0.10", features = ["toml", "env"] }

第三方提供程序

以下外部库实现了Figment提供程序

  • figment_file_provider_adapter

    包装现有提供程序。对于任何以_FILE(可配置)结尾的键,发出没有_FILE后缀的键,其值对应于路径为原始键值的文件的正文。

请提交一个pull request将您的库添加到这个列表中。

许可证

Figment根据您的选择,许可如下

依赖项

~0.1–9.5MB
~101K SLoC