#env-var #env #settings #env-file #web #error-value

env-loader

具有类型注解的环境变量简单存储

2个版本

0.3.2 2023年6月8日
0.3.1 2023年6月7日
0.3.0 2023年6月7日
0.2.0 2023年6月6日
0.1.0 2023年6月5日

#359 in 配置

37 每月下载量

MIT/Apache

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