#env-var #configuration #environment #env #macro #web-apps

itconfig

轻松从环境变量构建配置并在全局范围内使用

28 个版本 (8 个稳定版本)

1.1.1 2021年6月22日
1.0.5 2021年2月24日
1.0.1 2020年3月17日
0.11.2 2020年2月11日
0.5.1 2019年12月29日

#212 in 配置

Download history 90/week @ 2024-03-11 148/week @ 2024-03-18 95/week @ 2024-03-25 99/week @ 2024-04-01 18/week @ 2024-04-08 41/week @ 2024-04-15 85/week @ 2024-04-22 83/week @ 2024-04-29 66/week @ 2024-05-06 48/week @ 2024-05-13 47/week @ 2024-05-20 14/week @ 2024-05-27 21/week @ 2024-06-03 16/week @ 2024-06-10 28/week @ 2024-06-17 23/week @ 2024-06-24

每月90次下载

MIT 许可证

31KB
489

itconfig

Build Status unsafe forbidden Documentation Crates.io Join the chat at https://gitter.im/icetemple/itconfig-rs Crates.io

轻松从环境变量构建配置并在全局范围内使用。

我们建议您从文档开始。

动机

我开始使用 Rust 和具有广泛使用环境变量的 Web 编程经验。首先我看了已经创建的库。但那里需要初始化结构,该结构需要移动到需要变量的每个函数中。它使用一点内存,但配置的寿命与应用程序的生命周期一样长。因此,我决定创建自己的库。

安装

这些宏需要 Rust 编译器版本 1.31 或更高。

itconfig = { version = "1.0", features = ["macro"] } 作为依赖项添加到 Cargo.toml

Cargo.toml 示例

[package]
name = "my-crate"
version = "0.1.0"
authors = ["Me <[email protected]>"]

[dependencies]
itconfig = { version = "1.0", features = ["macro"] }

基本用法

use itconfig::config;
use std::env;
//use dotenv::dotenv;

config! {
    DEBUG: bool => false,

    #[env_name = "APP_HOST"]
    HOST: String => "127.0.0.1",

    database {
        URL < (
            "postgres://",
            POSTGRES_USERNAME => "user",
            ":",
            POSTGRES_PASSWORD => "pass",
            "@",
            POSTGRES_HOST => "localhost:5432",
            "/",
            POSTGRES_DB => "test",
        ),

        pool {
            MAX_SIZE: usize => 15,
        },
    },

    sentry {
        DSN: Option<&'static str>,
    },

    feature {
        static CORS: bool => false,

        static GRAPHQL_PLAYGROUND: bool => false,
    },
}

fn main () {
    // dotenv().expect("dotenv setup to be successful");
    // or
    env::set_var("FEATURE_CORS", "true");

    config::init();
    assert_eq!(config::HOST(), String::from("127.0.0.1"));
    assert_eq!(config::database::URL(), String::from("postgres://user:pass@localhost:5432/test"));
    assert_eq!(config::database::pool::MAX_SIZE(), 15);
    assert_eq!(config::sentry::DSN(), None);
    assert_eq!(config::feature::CORS(), true);
}

宏是可选功能,默认禁用。您可以使用此库而不使用宏

use itconfig::*;
use std::env;
// use dotenv::dotenv;

fn main() {
    // dotenv().expect("dotenv setup to be successful");
    // or
    env::set_var("DATABASE_URL", "postgres://127.0.0.1:5432/test");

    let database_url = get_env::<String>("DATABASE_URL").unwrap();
    let new_profile: bool = get_env_or_default("FEATURE_NEW_PROFILE", false);
    let articles_per_page: u32 = get_env_or_set_default("ARTICLES_PER_PAGE", 10);
}

运行测试

cargo test --all-features

可用功能

  • 默认 - ["primitives"]
  • macro - 激活 config! 宏,以轻松配置 Web 应用程序。
  • primitives - 特性组:numbersbool
  • numbers - 特性组:intuintfloat
  • int - 特性组:i8i16i32i64i128isize
  • uint - 功能组:u8u16u32u64u128usize
  • float - 功能组:f32f64
  • i8 - 为 i8 类型实现 EnvString
  • i16 - 为 i16 类型实现 EnvString
  • i32 - 为 i32 类型实现 EnvString
  • i64 - 为 i64 类型实现 EnvString
  • i128 - 为 i128 类型实现 EnvString
  • isize - 为 isize 类型实现 EnvString
  • u8 - 为 u8 类型实现 EnvString
  • u16 - 为 u16 类型实现 EnvString
  • u32 - 为 u32 类型实现 EnvString
  • u64 - 为 u64 类型实现 EnvString
  • u128 - 为 u128 类型实现 EnvString
  • usize - 为 usize 类型实现 EnvString
  • f32 - 为 f32 类型实现 EnvString
  • f64 - 为 f64 类型实现 EnvString
  • bool - 为 bool 类型实现 EnvString
  • json_array - 为向量类型添加 EnvString 实现(使用可选的 serde_json 包)。⚠ 已弃用

许可证

MIT © Ice Temple

贡献者

pleshevskiy (Dmitriy Pleshevskiy) – 创建者,维护者。

依赖关系

~245KB