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 配置
每月90次下载
31KB
489 行
itconfig
轻松从环境变量构建配置并在全局范围内使用。
我们建议您从文档开始。
动机
我开始使用 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 - 特性组:
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 - 为向量类型添加 EnvString 实现(使用可选的
serde_json
包)。⚠ 已弃用
许可证
贡献者
pleshevskiy (Dmitriy Pleshevskiy) – 创建者,维护者。
依赖关系
~245KB