[−][src]Struct walkdir::Error
An error produced by recursively walking a directory.
This error type is a light wrapper around std::io::Error. In
particular, it adds the following information:
- The depth at which the error occurred in the file tree, relative to the root.
- The path, if any, associated with the IO error.
- An indication that a loop occurred when following symbolic links. In this case, there is no underlying IO error.
To maintain good ergonomics, this type has a
impl From<Error> for std::io::Error defined which preserves the original context.
This allows you to use an io::Result with methods in this crate if you don't care about
accessing the underlying error data in a structured form.
Methods
impl Error[src]
impl Errorpub fn path(&self) -> Option<&Path>[src]
pub fn path(&self) -> Option<&Path>Returns the path associated with this error if one exists.
For example, if an error occurred while opening a directory handle,
the error will include the path passed to std::fs::read_dir.
pub fn loop_ancestor(&self) -> Option<&Path>[src]
pub fn loop_ancestor(&self) -> Option<&Path>Returns the path at which a cycle was detected.
If no cycle was detected, None is returned.
A cycle is detected when a directory entry is equivalent to one of its ancestors.
To get the path to the child directory entry in the cycle, use the
path method.
pub fn depth(&self) -> usize[src]
pub fn depth(&self) -> usizeReturns the depth at which this error occurred relative to the root.
The smallest depth is 0 and always corresponds to the path given to
the new function on WalkDir. Its direct descendents have depth
1, and their descendents have depth 2, and so on.
pub fn io_error(&self) -> Option<&Error>[src]
pub fn io_error(&self) -> Option<&Error>Inspect the original io::Error if there is one.
None is returned if the Error doesn't correspond to an
io::Error. This might happen, for example, when the error was
produced because a cycle was found in the directory tree while
following symbolic links.
This method returns a borrowed value that is bound to the lifetime of the Error. To
obtain an owned value, the into_io_error can be used instead.
This is the original
io::Errorand is not the same asimpl From<Error> for std::io::Errorwhich contains additional context about the error.
Example
use std::io; use std::path::Path; use walkdir::WalkDir; for entry in WalkDir::new("foo") { match entry { Ok(entry) => println!("{}", entry.path().display()), Err(err) => { let path = err.path().unwrap_or(Path::new("")).display(); println!("failed to access entry {}", path); if let Some(inner) = err.io_error() { match inner.kind() { io::ErrorKind::InvalidData => { println!( "entry contains invalid data: {}", inner) } io::ErrorKind::PermissionDenied => { println!( "Missing permission to read entry: {}", inner) } _ => { println!( "Unexpected error occurred: {}", inner) } } } } } }
pub fn into_io_error(self) -> Option<Error>[src]
pub fn into_io_error(self) -> Option<Error>Trait Implementations
impl From<Error> for Error[src]
impl From<Error> for Errorfn from(walk_err: Error) -> Error[src]
fn from(walk_err: Error) -> ErrorConvert the Error to an io::Error, preserving the original
Error as the "inner error". Note that this also makes the display
of the error include the context.
This is different from into_io_error which returns the original
io::Error.
impl Display for Error[src]
impl Display for Errorfn fmt(&self, f: &mut Formatter) -> Result[src]
fn fmt(&self, f: &mut Formatter) -> ResultFormats the value using the given formatter. Read more
impl Debug for Error[src]
impl Debug for Errorfn fmt(&self, f: &mut Formatter) -> Result[src]
fn fmt(&self, f: &mut Formatter) -> ResultFormats the value using the given formatter. Read more
impl Error for Error[src]
impl Error for Errorfn description(&self) -> &str[src]
fn description(&self) -> &strThis method is soft-deprecated. Read more
fn cause(&self) -> Option<&Error>[src]
fn cause(&self) -> Option<&Error>: replaced by Error::source, which can support downcasting
The lower-level cause of this error, if any. Read more
fn source(&self) -> Option<&(Error + 'static)>1.30.0[src]
fn source(&self) -> Option<&(Error + 'static)>The lower-level source of this error, if any. Read more
Auto Trait Implementations
Blanket Implementations
impl<T> From for T[src]
impl<T> From for Timpl<T> ToString for T where
T: Display + ?Sized, [src]
impl<T> ToString for T where
T: Display + ?Sized, impl<T, U> Into for T where
U: From<T>, [src]
impl<T, U> Into for T where
U: From<T>, impl<T, U> TryFrom for T where
T: From<U>, [src]
impl<T, U> TryFrom for T where
T: From<U>, type Error = !
try_from)The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>try_from)Performs the conversion.
impl<T> Borrow for T where
T: ?Sized, [src]
impl<T> Borrow for T where
T: ?Sized, impl<T> Any for T where
T: 'static + ?Sized, [src]
impl<T> Any for T where
T: 'static + ?Sized, fn get_type_id(&self) -> TypeId[src]
fn get_type_id(&self) -> TypeId🔬 This is a nightly-only experimental API. (get_type_id)
this method will likely be replaced by an associated static
Gets the TypeId of self. Read more
impl<T> BorrowMut for T where
T: ?Sized, [src]
impl<T> BorrowMut for T where
T: ?Sized, fn borrow_mut(&mut self) -> &mut T[src]
fn borrow_mut(&mut self) -> &mut TMutably borrows from an owned value. Read more
impl<T, U> TryInto for T where
U: TryFrom<T>, [src]
impl<T, U> TryInto for T where
U: TryFrom<T>,