This guide documents changes between v4 and v5 for upgrading existing code.
Notify v5 only contains precise events. Debouncing is done by a separate crate notify-debouncer-mini. If you relied on RawEvent
, this got replaced by Event
.
The old DebouncedEvent
is completely removed. notify-debouncer-mini only reports an Any
like event (named DebouncedEvent
too), as relying on specific kinds (Write/Create/Remove) is very platform specific and can't be guaranteed to work, relying on a lot of assumptions. In most cases you should check anyway what exactly the state of files is, or probably re-run your application code, not relying on which event happened.
If you've used the debounced API, which was the default in v4 without raw_
, please see here for an example using the new crate.
For an example of precise events you can look here.
Watchers now accept the EventHandler
trait for event handling, allowing for callbacks and foreign channels.
All watchers only expose the Watcher
trait, which takes an EventHandler
and a Config
, the latter being used to possibly initialize things that can only be specified before running the watcher. One Example would be the compare_contents
from PollWatcher
.
Notify v5 by default uses crossbeam-channel
internally. You can disable this as documented in the crate, this may be required for tokio users.
For macOS the kqueue backend can now be used alternatively by using the macos_kqueue
feature.
Platform support in v5 now includes BSD and kqueue on macos in addition to fsevent.