5个不稳定版本

0.14.1 2021年8月21日
0.14.0 2021年7月27日
0.13.1 2021年6月13日
0.6.1 2021年3月6日

#98 in #config-parser

44 每月下载量
用于 salak_factory

MIT 协议

115KB
3K SLoC

salak 包含太多东西和令人困惑的名称,不仅仅是配置,请使用 cfg-rs 代替。

Salak 是一个多层配置加载器和零模板配置解析器,具有许多预定义的源。

Crates.io Crates.io Documentation dependency status License Actions Status

请参阅 salak 文档.

注意

请注意,salak-0.9.* 已完全重写,因此API可能变化很大,一些功能可能已删除。它们将在后续版本中添加。

快速示例

use salak::*;

#[derive(Debug, FromEnvironment)]
#[salak(prefix = "config")]
struct Config {
    #[salak(default = false)]
    verbose: bool,
    optional: Option<String>,
    #[salak(name = "val")]
    value: i64,
}
let env = Salak::builder()
    .set("config.val", "2021")
    .build()
    .unwrap();
let config = env.get::<Config>().unwrap();
assert_eq!(2021, config.value);
assert_eq!(None, config.optional);
assert_eq!(false, config.verbose);

FromEnvironment 特性

Salak 工厂

salak_factory 可以根据 salak 初始化资源,例如redis、postgresql等。

use std::sync::Arc;

use salak::*;
use salak_factory::redis_default::RedisPool;

generate_service!(RedisService {
  redis: RedisPool,
  #[salak(namespace = "hello", access = "pub")]
  back: Option<RedisPool>
});

fn main() -> Result<(), PropertyError> {
    env_logger::builder()
        .filter_level(log::LevelFilter::Info)
        .try_init()?;
    let env = Salak::builder()
        .register_default_resource::<RedisPool>()?
        .configure_args(app_info!())
        .build()?;
    let _service = env.get_service::<RedisService>()?;
    let _conn = _service.as_redis().get()?;
    Ok(())
}

依赖项

~1–1.8MB
~31K SLoC