watchfile 0.1.1

An async utility trait to subscribe to file changes of a serializable file
Documentation
# 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"]` using `serde_json`)
- TOML (`features = ["toml"]` using `toml`)
- YAML (`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):

```toml
[dependencies]
watchfile = { version = "0.1", default-features = false, features = ["json"] }
```

Usage:

```rust
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());
}
```