2 个版本
0.1.1 | 2024年7月10日 |
---|---|
0.1.0 | 2024年7月7日 |
#203 in 配置
每月 49 次下载
14KB
184 行
Reloadify 🔁
Reloadify 是一个 Rust 库,旨在简化应用程序中配置文件的自动重新加载。它简化了检测配置文件(如 JSON、TOML、XML 等)更改的过程,并自动应用这些更改,而无需重启应用程序。
特性 ✨
- 自动重新加载:检测配置文件更改并自动重新加载它们。
- 支持多种格式:与 JSON、TOML、XML 等格式兼容。
- 易于集成:专为无缝集成到 Rust 应用程序而设计。
- 可定制:允许定制文件监视策略和重新加载行为。
- 实时更改:返回一个配置接收通道。当配置更改时,调用者将接收最新的配置。
安装 🚀
要在 Rust 项目中使用 Reloadify,只需将其添加到您的 Cargo.toml
[dependencies]
reloadify = "0.1"
如果您想使用最新版本,可以像这样导入:
[dependencies]
reloadify = { git = "ssh://[email protected]/trayvonpan/reloadify.git", branch = "main" }
使用 🛠️
以下是一个基本示例,演示如何使用 Reloadify 自动重新加载 JSON 配置文件:
use reloadify::{ConfigId, Format, ReloadableConfig, Reloadify};
use serde::{Deserialize, Serialize};
use std::{path::PathBuf, str::FromStr, time::Duration};
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct TsConfig {
pub extends: String,
#[serde(rename = "compilerOptions")]
pub compiler_options: CompilerOptions,
pub files: Vec<String>,
pub include: Vec<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct CompilerOptions {
#[serde(rename = "outDir")]
pub out_dir: String,
pub types: Vec<String>,
}
const TS_CONFIG_ID: &str = "tsconfig";
fn main() -> Result<(), Box<dyn std::error::Error>> {
let reloadify = Reloadify::new();
let rx = reloadify.add::<TsConfig>(ReloadableConfig {
id: ConfigId::new(TS_CONFIG_ID),
path: PathBuf::from_str("examples/config/tsconfig.spec.json")?,
format: Format::Json,
poll_interval: Duration::from_secs(1),
})?;
// Optional: Spawn a thread to listen for the latest configuration.
std::thread::spawn(move || {
for latest_cfg in rx {
// Do something with the latest configuration...
println!("Received latest config: {:?}", latest_cfg);
}
});
let ts_config = reloadify.get::<TsConfig>(ConfigId::new(TS_CONFIG_ID))?;
// Do something with ts_config...
println!("{:?}", ts_config);
Ok(())
}
文档 📚
有关详细使用说明和 API 参考,请参阅 文档。
贡献 🤝
欢迎贡献!请分支仓库并提交带有您更改的拉取请求。
许可证 📝
本项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件。
依赖关系
~1.2–10MB
~92K SLoC