#watch #events #default #notify

notify-debouncer-mini

notify mini debouncer for events

11 unstable releases (5 breaking)

0.6.0 Jan 10, 2025
0.5.0 Oct 25, 2024
0.4.1 Aug 21, 2023
0.3.0 May 17, 2023
0.1.3 Aug 17, 2022

#1017 in Filesystem

Download history 73505/week @ 2025-01-10 45122/week @ 2025-01-17 43476/week @ 2025-01-24 47927/week @ 2025-01-31 55343/week @ 2025-02-07 40005/week @ 2025-02-14 44387/week @ 2025-02-21 41292/week @ 2025-02-28 49082/week @ 2025-03-07 54430/week @ 2025-03-14 48767/week @ 2025-03-21 51007/week @ 2025-03-28 52978/week @ 2025-04-04 55026/week @ 2025-04-11 47965/week @ 2025-04-18 51057/week @ 2025-04-25

217,050 downloads per month
Used in 81 crates (67 directly)

MIT/Apache

195KB
3.5K SLoC

Debouncer for notify. Filters incoming events and emits only one event per timeframe per file.

Installation

[dependencies]
notify-debouncer-mini = "0.6.0"

In case you want to select specific features of notify, specify notify as dependency explicitly in your dependencies. Otherwise you can just use the re-export of notify from debouncer-mini.

notify-debouncer-mini = "0.6.0"
notify = { version = "..", features = [".."] }

Examples

See also the full configuration example here.

use notify_debouncer_mini::{notify::*,new_debouncer,DebounceEventResult};

  // Select recommended watcher for debouncer.
  // Using a callback here, could also be a channel.
  let mut debouncer = new_debouncer(Duration::from_secs(2), |res: DebounceEventResult| {
      match res {
          Ok(events) => events.iter().for_each(|e|println!("Event {:?} for {:?}",e.kind,e.path)),
          Err(e) => println!("Error {:?}",e),
      }
  }).unwrap();

  // Add a path to be watched. All files and directories at that path and
  // below will be monitored for changes.
  debouncer.watcher().watch(Path::new("."), RecursiveMode::Recursive).unwrap();

  // note that dropping the debouncer (as will happen here) also ends the debouncer
  // thus this demo would need an endless loop to keep running

Features

The following crate features can be turned on or off in your cargo dependency config:

  • serde passed down to notify-types, off by default
  • crossbeam-channel passed down to notify, off by default
  • macos_fsevent passed down to notify, off by default
  • macos_kqueue passed down to notify, off by default
  • serialization-compat-6 passed down to notify, off by default

Caveats

As all file events are sourced from notify, the known problems section applies here too.


Notify debouncer

» Docs

Tiny debouncer for notify. Filters incoming events and emits only one event per timeframe per file.

Features

  • crossbeam-channel passed down to notify, off by default

  • serde for serde support of event types, off by default

  • serialization-compat-6 passed down to notify, off by default

Dependencies

~2–11MB
~141K SLoC