diff options
author | Lars Wirzenius <liw@liw.fi> | 2021-04-24 08:18:56 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2021-04-29 10:51:31 +0300 |
commit | 80ae98bf87c57aa361a13c3dd925455fb67e3f03 (patch) | |
tree | aca3860996a6ebd622802d6a41493008189203ab /src/fsiter.rs | |
parent | bf645f3645fd2ee57495eafd1ccfb4afbe917bec (diff) | |
download | obnam2-80ae98bf87c57aa361a13c3dd925455fb67e3f03.tar.gz |
feat: improve error messages
All unclear error messages should now be clearer. For example, all the
ones related to a file mention the file name and the attempted
operation that failed.
Diffstat (limited to 'src/fsiter.rs')
-rw-r--r-- | src/fsiter.rs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/fsiter.rs b/src/fsiter.rs index 6c18404..56630fa 100644 --- a/src/fsiter.rs +++ b/src/fsiter.rs @@ -10,11 +10,11 @@ pub struct FsIterator { #[derive(Debug, thiserror::Error)] pub enum FsIterError { - #[error(transparent)] - WalkError(#[from] walkdir::Error), + #[error("walkdir failed: {0}")] + WalkDir(walkdir::Error), - #[error("I/O error on {0}: {1}")] - IoError(PathBuf, #[source] std::io::Error), + #[error("failed to get file system metadata for {0}: {1}")] + Metadata(PathBuf, std::io::Error), #[error(transparent)] FsEntryError(#[from] FsEntryError), @@ -110,7 +110,7 @@ impl Iterator for SkipCachedirs { debug!("walkdir found: {:?}", next); match next { None => None, - Some(Err(err)) => Some(Err(err.into())), + Some(Err(err)) => Some(Err(FsIterError::WalkDir(err))), Some(Ok(entry)) => { self.try_enqueue_cachedir_tag(&entry); Some(new_entry(entry.path())) @@ -127,7 +127,7 @@ fn new_entry(path: &Path) -> FsIterResult<FilesystemEntry> { Ok(meta) => meta, Err(err) => { warn!("failed to get metadata for {}: {}", path.display(), err); - return Err(FsIterError::IoError(path.to_path_buf(), err)); + return Err(FsIterError::Metadata(path.to_path_buf(), err)); } }; let entry = FilesystemEntry::from_metadata(path, &meta)?; |