#env-var #env #environment #static

env-flags

A convenience macro for declaring environment variables

1 unstable release

0.1.0 Oct 6, 2024

#275 in Configuration

Download history 91/week @ 2024-09-30 82/week @ 2024-10-07

173 downloads per month

MIT license

29KB
640 lines

env_flags

This library provides a convenient macro for declaring environment variables.

[dependencies]
env-flags = "0.1"

Compiler support: requires rustc 1.80+

Example

use env_flags::env_flags;

use std::time::Duration;

env_flags! {
    /// Required env var, panics if missing.
    AUTH_TOKEN: &str;
    /// Env var with a default value if not specified.
    pub(crate) PORT: u16 = 8080;
    /// An optional env var.
    pub OVERRIDE_HOSTNAME: Option<&str> = None;

    /// `Duration` by default is parsed as `f64` seconds.
    TIMEOUT: Duration = Duration::from_secs(5);
    /// Custom parsing function, takes a `String` and returns a `Result<Duration>`.
    TIMEOUT_MS: Duration = Duration::from_millis(30), |value| {
        value.parse().map(Duration::from_millis)
    };

    /// `bool` can be true, false, 1, or 0 (case insensitive)
    /// eg. export ENABLE_FEATURE="true"
    pub ENABLE_FEATURE: bool = true;

    /// `Vec<T>` by default is parsed as a comma-seprated string
    /// eg. export VALID_PORTS="80,443,9121"
    pub VALID_PORTS: Vec<u16> = vec![80, 443, 9121];
}

No runtime deps