| Crates.io | watchfile |
| lib.rs | watchfile |
| version | 0.1.1 |
| created_at | 2024-11-18 08:10:05.128657+00 |
| updated_at | 2024-11-18 08:16:44.418953+00 |
| description | An async utility trait to subscribe to file changes of a serializable file |
| homepage | |
| repository | https://github.com/ofersadan85/watchfile |
| max_upload_size | |
| id | 1451953 |
| size | 20,008 |
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.
Currently supported:
features = ["json"] using serde_json)features = ["toml"] using toml)features = ["yaml"] using serde_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());
}