[−][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 Error
pub 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) -> usize
Returns 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::Error
and is not the same asimpl From<Error> for std::io::Error
which 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 Error
fn from(walk_err: Error) -> Error
[src]
fn from(walk_err: Error) -> Error
Convert 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 Error
fn fmt(&self, f: &mut Formatter) -> Result
[src]
fn fmt(&self, f: &mut Formatter) -> Result
Formats the value using the given formatter. Read more
impl Debug for Error
[src]
impl Debug for Error
fn fmt(&self, f: &mut Formatter) -> Result
[src]
fn fmt(&self, f: &mut Formatter) -> Result
Formats the value using the given formatter. Read more
impl Error for Error
[src]
impl Error for Error
fn description(&self) -> &str
[src]
fn description(&self) -> &str
This 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 T
impl<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 T
Mutably 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>,