Skip to content

matrix-construct/figment

Repository files navigation

Figment   ci.svg crates.io docs.rs

Figment is a semi-hierarchical configuration library for Rust so con-free, it's unreal.

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()?;

See the documentation for a detailed usage guide and information.

Usage

Add the following to your Cargo.toml, enabling the desired built-in providers:

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

Third-Party Providers

The following external libraries implement Figment providers:

  • figment_file_provider_adapter

    Wraps existing providers. For any key ending in _FILE (configurable), emits a key without the _FILE suffix with a value corresponding to the contents of the file whose path is the original key's value.

Please submit a pull request to add your library to this list.

License

Figment is licensed under either of the following, at your option:

About

No description, website, or topics provided.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors