Crate notify_debouncer_full

Source
Expand description

A debouncer for notify that is optimized for ease of use.

  • Only emits a single Rename event if the rename From and To events can be matched
  • Merges multiple Rename events
  • Takes Rename events into account and updates paths for events that occurred before the rename event, but which haven’t been emitted, yet
  • Optionally keeps track of the file system IDs all files and stitches rename events together (macOS FS Events, Windows)
  • Emits only one Remove event when deleting a directory (inotify)
  • Doesn’t emit duplicate create events
  • Doesn’t emit Modify events after a Create event

§Installation

[dependencies]
notify-debouncer-full = "0.5.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-full.

notify-debouncer-full = "0.5.0"
notify = { version = "..", features = [".."] }

§Examples

use notify_debouncer_full::{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), None, |result: DebounceEventResult| {
    match result {
        Ok(events) => events.iter().for_each(|event| println!("{event:?}")),
        Err(errors) => errors.iter().for_each(|error| println!("{error:?}")),
    }
}).unwrap();

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

§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
  • web-time 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.

Re-exports§

pub use file_id;
pub use notify;

Structs§

DebouncedEvent
A debounced event is emitted after a short delay.
Debouncer
Debouncer guard, stops the debouncer on drop.
FileIdMap
A cache to hold the file system IDs of all watched files.
NoCache
An implementation of the FileIdCache trait that doesn’t hold any data.

Traits§

DebounceEventHandler
The set of requirements for watcher debounce event handling functions.
FileIdCache
The interface of a file ID cache.

Functions§

new_debouncer
Short function to create a new debounced watcher with the recommended debouncer and the built-in file ID cache.
new_debouncer_opt
Creates a new debounced watcher with custom configuration.

Type Aliases§

DebounceEventResult
A result of debounced events. Comes with either a vec of events or vec of errors.
RecommendedCache
The recommended file ID cache implementation for the current platform