5 个版本
0.2.0 | 2023年2月25日 |
---|---|
0.1.3 | 2023年2月11日 |
0.1.2 | 2022年12月24日 |
0.1.1 | 2022年12月16日 |
0.1.0 | 2022年12月16日 |
#436 in 配置
每月 66 次下载
36KB
890 行
Kōsei
こうせい
A 一个易于使用的 Rust 编程语言配置库。
特性
特性
动态 | 热重载配置支持 |
---|---|
apollo | Apollo 支持 |
nacos | Nacos 支持 |
快速入门
查看
examples
以获取更多使用信息。
配置项
// `Deserialize` and `Clone` traits should be applied
#[derive(Clone, Debug, Deserialize)]
struct Entry {
...
}
- 基础文件配置
#[test]
fn base_test() {
// Panic if no such file `config/config.yaml`
let config: Config<Entry> = Config::from_file("config/config.yaml");
let entry: &Entry = config.as_inner(); // borrowed value has the same lifetimes as config
let entry: Entry = config.to_inner(); // clone a new Entry
let entry: Entry = config.into_inner(); // take ownership
}
- 动态文件配置
#[tokio::test]
async fn dynamic_test() {
// Create a dynamic config and a watcher
let (config, mut watcher) = DynamicConfig::<Entry>::watch_file("config/config.yaml");
// Listen to file modify event
watcher.watch().unwrap();
let lock = config.lock();
let entry: &Entry = lock.as_inner(); // borrow Entry
let entry: Entry = lock.to_inner(); // clone a new Entry
// let entry: Entry = lock.into_inner(); panic! cannot take the lock ownership
let arc = config.as_arc(); // clone a new arc
// Stop watching
watcher.stop().unwrap();
// You can watch twice
watcher.watch().unwrap();
}
- 动态 Apollo 配置
use kosei::apollo::{Builder, WatchMode};
use kosei::{ConfigType, DynamicConfig, InnerWatcher};
use serde::Deserialize;
use std::time::Duration;
#[derive(Deserialize, Clone, Debug)]
struct Entry {
x: f64,
y: f64,
}
#[tokio::main]
async fn main() {
let client = Builder::new()
.app_id("test")
.namespace("test", ConfigType::YAML)
.server_url("https://127.0.0.1:8080")
.finish();
let (config, mut watcher) =
DynamicConfig::<Entry>::watch_apollo(client, WatchMode::RealTime).await;
watcher.watch().unwrap();
{
let guard = config.lock();
println!("entry: {:?}", guard.as_inner());
}
tokio::time::sleep(Duration::from_secs(10)).await;
{
let guard = config.lock();
println!("entry: {:?}", guard.as_inner());
}
}
依赖
~9–24MB
~337K SLoC