dirx 0.1.0

Creates an in-memory index of all the files in a directory tree, and allows efficient scanning of only those files that have been modified since the index got created
Documentation
use std::fs::File;
use std::fs::Metadata;
use std::path::Path;
use std::path::PathBuf;

#[derive(Debug)]
pub enum Event {
    Added {
        path: PathBuf,
        file: File,
        metadata: Metadata,
    },
    Modified {
        path: PathBuf,
        file: File,
        metadata: Metadata,
    },
    Removed {
        path: PathBuf,
    },
}

impl Event {
    #[inline]
    pub fn path(&self) -> &Path {
        match self {
            Self::Added { ref path, .. } => path,
            Self::Modified { ref path, .. } => path,
            Self::Removed { ref path, .. } => path,
        }
    }

    #[inline]
    pub fn file(&self) -> Option<&File> {
        match self {
            Self::Added { ref file, .. } => Some(file),
            Self::Modified { ref file, .. } => Some(file),
            Self::Removed { .. } => None,
        }
    }

    #[inline]
    pub fn file_mut(&mut self) -> Option<&mut File> {
        match self {
            Self::Added { ref mut file, .. } => Some(file),
            Self::Modified { ref mut file, .. } => Some(file),
            Self::Removed { .. } => None,
        }
    }

    #[inline]
    pub fn metadata(&self) -> Option<&Metadata> {
        match self {
            Self::Added { ref metadata, .. } => Some(metadata),
            Self::Modified { ref metadata, .. } => Some(metadata),
            Self::Removed { .. } => None,
        }
    }
}