1use std::path::PathBuf;
2
3#[derive(Debug)]
4pub enum Error {
5 SymlinkCycle(PathBuf),
6 Io(PathBuf, ::std::io::Error),
7 Filter(PathBuf, Box<dyn ::std::error::Error + Send>),
8}
9
10pub type Result<T> = ::std::result::Result<T, Error>;
11
12impl Error {
13 pub fn symlink_cycle(self) -> Option<PathBuf> {
14 if let Error::SymlinkCycle(p) = self {
15 Some(p)
16 } else {
17 None
18 }
19 }
20
21 pub fn io(self) -> Option<(PathBuf, ::std::io::Error)> {
22 if let Error::Io(p, e) = self {
23 Some((p, e))
24 } else {
25 None
26 }
27 }
28
29 pub fn filter(self) -> Option<(PathBuf, Box<dyn ::std::error::Error + Send>)> {
30 if let Error::Filter(p, e) = self {
31 Some((p, e))
32 } else {
33 None
34 }
35 }
36}