notify 2.0.0-pre1

Cross-platform filesystem notification library failed to build notify-2.0.0-pre1
Please check the build logs and, if you believe this is' fault, open an issue.


NOTICE: I need a usable-in-stable replacement for stat.modified() i.e. a cross-platform way of getting the mtime of a file. Without that, I cannot make this library work. I do not currently have the time to do it myself, so please help. Thank you.

Cross-platform filesystem notification library for Rust.


notify = "1.1"

Notify currently doesn't have working builds for stable version numbers, as the notice above explains, some things are missing. However, 2.0.0-preN releases will be published to for the adventurous and those in need.


extern crate notify;

use notify::{RecommendedWatcher, Error, Watcher};
use std::sync::mpsc::channel;

fn main() {
  // Create a channel to receive the events.
  let (tx, rx) = channel();

  // Automatically select the best implementation for your platform.
  // You can also access each implementation directly e.g. INotifyWatcher.
  let mut w: Result<RecommendedWatcher, Error> = Watcher::new(tx);

  match w {
    Ok(mut watcher) => {
      // Add a path to be watched. All files and directories at that path and
      // below will be monitored for changes."/home/test/notify"));

      // You'll probably want to do that in a loop. The type to match for is
      // notify::Event, look at src/ for details.
      match rx.recv() {
        _ => println!("Recv.")
    Err(e) => println!("Error")


  • Linux / Android: inotify
  • All platforms: polling (not working, see notice)
  • Coming soon: OS X using FSEvent


  • Windows: ReadDirectoryChangesW
  • OS X: FSEvents
  • BSD / OS X / iOS: kqueue
  • Solaris 11: FEN

Known Bugs

  • polling backend only handles op::WRITEs (poll implementation scrapped for the moment)
  • see TODO and FIXME comments in the code for more

Pull requests and bug reports happily accepted!


Inspired by Go's fsnotify, born out of need for cargo watch, and general frustration at the non-existence of C/Rust cross-platform notify libraries.

Written from scratch by Félix Saparelli, and released in the Public Domain using the Creative Commons Zero Declaration.