#yaml-config #yaml #config-file #trail #conf #cfg

trail-config

一个简单的库,用于从配置文件中读取(和格式化)值

5个版本

0.1.5 2024年6月26日
0.1.4 2021年12月13日
0.1.3 2021年9月15日
0.1.2 2021年9月15日
0.1.1 2021年9月15日

配置类别中排名199

MIT许可证

8KB
121

Trail Config

一个简单的Rust库,用于帮助从配置文件中读取(和格式化)值。
目前仅支持YAML格式(使用serde_yaml库)。

示例

示例 config.yaml 文件

app:
  port: 1000
db:
  redis:
    server: 127.0.0.1
    port: 6379
    key_expiry: 3600
  sql:
    driver: SQL Server
    server: 127.0.0.1
    database: my_db
    username: user
    password: Pa$$w0rd!

默认配置

let config = Config::default(); // loads config.yaml file

let port = config.get("app/port").unwrap(); // returns serde_yaml::value::Value

let port = config.str("app/port");
assert_eq!("1000", port);

let redis = config.get("db/redis"); // returns serde_yaml::value::Value (in this case Mapping)

let redis = config.str("db/redis");
assert_eq!("", redis);

let expiry = config.str("db/redis/key_expiry");
assert_eq!("3600", expiry);

let redis = config.fmt("{}:{}", "db/redis/server+port");
assert_eq!("127.0.0.1:6379", redis);

let conn = config.fmt("Driver={{{}}};Server={};Database={};Uid={};Pwd={};", "db/sql/driver+server+database+username+password");
assert_eq!("Driver={SQL Server};Server=127.0.0.1;Database=my_db;Uid=user;Pwd=Pa$$w0rd!;", conn);

使用自定义分隔符

let config = Config::new("config.yaml", "::", None).unwrap(); 

let port = config.str("app::port");
assert_eq!("1000", port);

使用环境变量

let config = Config::new("config.{env}.yaml", "/", Some("dev")).unwrap(); // loads config.dev.yaml
assert_eq!("dev", config.environment().unwrap());

许可证

本项目采用MIT许可证 - 详细内容请参阅LICENSE文件

依赖项

~2MB
~44K SLoC