2个版本
0.3.2 | 2023年6月8日 |
---|---|
0.3.1 | 2023年6月7日 |
0.3.0 |
|
0.2.0 |
|
0.1.0 |
|
#359 in 配置
37 每月下载量
18KB
406 行
具有类型注解的环境变量简单存储
- 依赖dotenv crate
ConfigLoader::new(..) 如果从.env文件或提供的约束中无法读取一个或多个值或违反任何约束,则返回错误;这是预期行为,因为您不希望在没有所需的env值的情况下启动应用程序。
如果您尝试使用与模式中不匹配的类型获取值,您将得到一个错误。在任何情况下,包都不应该崩溃。
与宏一起使用
let env_values = convert! {
PORT: int, // typing is anything possible to lovercase to i32, int, integer: Int,int,INT,Integer,I32,etc..
HOST: str, // same rule for str | string
CRITICAL_FLAG: bool, // same rule for bool | boolean
LONG_VAR: i64 // same rule for i64 | long
};
let store = ConfigLoader::new(env_values, None).unwrap(); // second arg for custom env file
let port: i32 = store.get("PORT").unwrap();
let host: String = store.get("HOST").unwrap();
let flag: bool = store.get("CRITICAL_FLAG").unwrap();
let num: i64 = store.get("LONG_VAR").unwrap();
支持的类型
- [int , integer, i32, Int, Integer ...] 在 Rust 中为 i32
- [long, Long, i64...] 在 Rust 中为 i64
- [str, string, String, Str...] 在 Rust 中为 String
- [bool, boolean] 在 Rust 中为 bool
与约束一起使用
在变量名和类型之间用':'分隔后,可以添加用"=>"分隔的约束
let env_values = convert! {
PORT: int => min(1000) max(2000),
HOST: str => min(10),
CRITICAL_FLAG: bool => optional,
LONG_VAR: i64 => min(10000),
NOT_EMPTY_STR_VALUE:str => notEmpty
};
支持的约束
- min() 用于字符串、整数、长整数
- max() 用于字符串、整数、长整数
- notEmpty 用于字符串
- optional 用于所有类型
不支持尾随逗号。
与自定义文件一起使用
let env_values = convert! {
PORT: int,
HOST: str,
};
let store = ConfigLoader::new(env_values, Some(".env.test")).unwrap();
let port: i32 = store.get("PORT").unwrap();
let host: String = store.get("HOST").unwrap();
- 如果您在项目中发现 env-loader 很有用,我恳请您通过在相应的 Git 仓库中 star 来支持我。
- 此外,如果您在遇到任何错误、不一致或改进区域时,欢迎您积极与仓库互动,通过打开问题来提出反馈。您的意见极具价值,因为它有助于我及时识别和解决问题。此外,如果您有关于增强 env-loader 功能的建议或想法,请随时分享。我相信协作开发,并欢迎您为此 crate 做出贡献,使其更加出色。
依赖
~125KB