[−][src]Crate envconf
Boilerplate free initialization of structs from environment variables
Usage example: It is usual that programs rely on environment variables to define their behavior, especially for cloud and microservies applications. Imagine you need to setup a database connection by reading the following environment variables:
- DB_HOST
- DB_PORT
- DB_USER
- DB_PASSWORD
- DB_NAME
With this library crate, it is as easy as this:
use envconf::{Setting, Error}; #[derive(Setting)] struct DBSettings { #[conf(env = "DB_HOST", default = "localhost")] host: String, #[conf(env = "DB_PORT", default = 5432)] port: usize, #[conf(default = "myuser")] // hardcoded setting user: String, #[conf(env = "DB_PASSWORD")] // env variable required password: String, #[conf(env = "DB_NAME", default = "mydb")] name: String, } fn main() -> Result<(), Error<'static>> { // This env is mandatory, so it needs to be set! std::env::set_var("DB_PASSWORD", "secret"); // Initialize config from environment variables // Read the crate docs to check the possible Error variants let db_settings = DBSettings::init()?; assert_eq!(db_settings.host, "localhost"); assert_eq!(db_settings.port, 5432); assert_eq!(db_settings.user, "myuser"); assert_eq!(db_settings.password, "secret"); assert_eq!(db_settings.name, "mydb"); Ok(()) }
Enums
Error | Possible errors returned by the |
Traits
Setting |
Derive Macros
Setting |