Expand description

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


notify-debouncer-mini = "0.4.1"

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.4.1"
notify = { version = "..", features = [".."] }


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),

  // 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


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

  • crossbeam enabled by default, adds DebounceEventHandler support for crossbeam channels. Also enables crossbeam-channel in the re-exported notify. You may want to disable this when using the tokio async runtime.
  • serde enables serde support for events.


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






  • Short function to create a new debounced watcher with the recommended debouncer.
  • Creates a new debounced watcher with custom configuration.

Type Definitions

  • A result of debounced events. Comes with either a vec of events or an immediate error.