Expand description
§Watchfile
A simple trait that will watch a (serializable) file for changes and update a data struct.
Uses tokio for async file reading and tokio::sync::watch for notifying about changes.
§File types / Features
Currently supported:
- JSON (
features = ["json"]usingserde_json) - TOML (
features = ["toml"]usingtoml) - YAML (
features = ["yaml"]usingserde_yaml)
All of them are optional features, all enabled by default. To minimize dependencies, you can disable them by using default-features = false in your Cargo.toml, and then enabling only the ones you need (for example, only JSON):
[dependencies]
watchfile = { version = "0.1", default-features = false, features = ["json"] }Usage:
use std::time::Duration;
use watchfile::WatchFile;
use std::ops::Deref;
#[derive(serde::Deserialize, Default, PartialEq, Debug)]
struct Config {
data: String,
}
impl WatchFile for Config {}
#[tokio::main]
async fn main() {
let rx = Config::watch_file("config.json", Duration::from_secs(1));
assert_eq!(rx.borrow().deref(), &Config::default());
}Enums§
- File
Type - Enum representing the supported file types, based on the enabled features.
Traits§
- Watch
File - Trait for watching a file and updating a struct.