5个稳定版本
1.1.1 | 2021年6月22日 |
---|---|
1.1.0 | 2021年4月22日 |
1.0.2 | 2021年2月23日 |
1.0.1 | 2021年2月11日 |
1.0.0 | 2020年3月16日 |
34 在 #env-variables
80 每月下载量
在 itconfig 中使用
29KB
535 行
itconfig
轻松从环境变量构建配置并在全局范围内使用。
我们建议您从文档开始。
动机
我开始使用Rust进行Web编程,当时环境变量被广泛使用,通常有50多个。我首先查看已经创建的库。但那里需要初始化需要移动到每个需要变量的函数的结构。它使用少量的内存,但配置的生命周期与应用程序的生命周期一样长。因此,我决定创建自己的库。
安装
这些宏需要Rust编译器版本1.31或更高。
在Cargo.toml
中将以下内容作为依赖项添加:itconfig = { version = "1.0", features = ["macro"] }
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
可用功能
- default - ["primitives"]
- macro - 激活
config!
宏,以轻松配置Web应用程序。 - primitives - 特性组:
numbers
和bool
。 - numbers - 特性组:
int
、uint
和float
。 - int - 特性组:
i8
、i16
、i32
、i64
、i128
和isize
。 - uint - 特性分组:
u8
、u16
、u32
、u64
、u128
和usize
。 - float - 特性分组:
f32
和f64
- 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 - 为 vector 类型添加 EnvString 实现(使用可选的
serde_json
包)。⚠ 已弃用
许可证
贡献者
pleshevskiy(Dmitriy Pleshevskiy) – 创建者,维护者。
依赖
~1.5MB
~35K SLoC