1use std::fmt::Display;
2
3mod hash;
4mod metadata;
5mod strip_prefix;
6mod traverse;
7mod walkdir_metadata;
8
9pub use hash::HashError;
10pub use metadata::MetadataError;
11pub use strip_prefix::StripPrefixError;
12pub use traverse::TraverseError;
13pub use walkdir_metadata::WalkDirMetadataError;
14
15#[derive(Debug)]
17pub enum Error {
18 Traverse(TraverseError),
20 Metadata(MetadataError),
22 WalkDirMetadata(WalkDirMetadataError),
25 Hash(HashError),
27 StripPrefix(StripPrefixError),
29}
30
31pub type Result<T> = std::result::Result<T, Error>;
33
34impl Display for Error {
35 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
36 match self {
37 Error::Traverse(inner) => inner.fmt(f),
38 Error::Metadata(inner) => inner.fmt(f),
39 Error::WalkDirMetadata(inner) => inner.fmt(f),
40 Error::Hash(inner) => inner.fmt(f),
41 Error::StripPrefix(inner) => inner.fmt(f),
42 }
43 }
44}
45
46impl std::error::Error for Error {
47 fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
48 match self {
49 Error::Traverse(inner) => inner.source(),
50 Error::Metadata(inner) => inner.source(),
51 Error::WalkDirMetadata(inner) => inner.source(),
52 Error::Hash(inner) => inner.source(),
53 Error::StripPrefix(inner) => inner.source(),
54 }
55 }
56}
57
58impl From<TraverseError> for Error {
59 fn from(value: TraverseError) -> Self {
60 Self::Traverse(value)
61 }
62}
63
64impl From<MetadataError> for Error {
65 fn from(value: MetadataError) -> Self {
66 Self::Metadata(value)
67 }
68}
69
70impl From<WalkDirMetadataError> for Error {
71 fn from(value: WalkDirMetadataError) -> Self {
72 Self::WalkDirMetadata(value)
73 }
74}
75
76impl From<HashError> for Error {
77 fn from(value: HashError) -> Self {
78 Self::Hash(value)
79 }
80}
81
82impl From<StripPrefixError> for Error {
83 fn from(value: StripPrefixError) -> Self {
84 Self::StripPrefix(value)
85 }
86}