async-walk 0.1.0

A concurrent fs walk library built on top of tokio
Documentation
use std::path::PathBuf;

#[derive(Debug)]
pub enum Error {
    SymlinkCycle(PathBuf),
    Io(PathBuf, ::std::io::Error),
    Filter(PathBuf, Box<dyn ::std::error::Error + Send>),
}

pub type Result<T> = ::std::result::Result<T, Error>;

impl Error {
    pub fn symlink_cycle(self) -> Option<PathBuf> {
        if let Error::SymlinkCycle(p) = self {
            Some(p)
        } else {
            None
        }
    }

    pub fn io(self) -> Option<(PathBuf, ::std::io::Error)> {
        if let Error::Io(p, e) = self {
            Some((p, e))
        } else {
            None
        }
    }

    pub fn filter(self) -> Option<(PathBuf, Box<dyn ::std::error::Error + Send>)> {
        if let Error::Filter(p, e) = self {
            Some((p, e))
        } else {
            None
        }
    }
}