pub struct DirEntry {
path: PathBuf,
ty: FileType,
follow_link: bool,
depth: usize,
ino: u64,
}
Expand description
A directory entry.
This is the type of value that is yielded from the iterators defined in this crate.
On Unix systems, this type implements the DirEntryExt
trait, which
provides efficient access to the inode number of the directory entry.
§Differences with std::fs::DirEntry
This type mostly mirrors the type by the same name in std::fs
. There
are some differences however:
- All recursive directory iterators must inspect the entry’s type. Therefore, the value is stored and its access is guaranteed to be cheap and successful.
path
andfile_name
return borrowed variants.- If
follow_links
was enabled on the originating iterator, then all operations except forpath
operate on the link target. Otherwise, all operations operate on the symbolic link.
Fields§
§path: PathBuf
The path as reported by the fs::ReadDir
iterator (even if it’s a
symbolic link).
ty: FileType
The file type. Necessary for recursive iteration, so store it.
follow_link: bool
Is set when this entry was created from a symbolic link and the user expects the iterator to follow symbolic links.
depth: usize
The depth at which this entry was generated relative to the root.
ino: u64
The underlying inode number (Unix only).
Implementations§
source§impl DirEntry
impl DirEntry
sourcepub fn path(&self) -> &Path
pub fn path(&self) -> &Path
The full path that this entry represents.
The full path is created by joining the parents of this entry up to the
root initially given to WalkDir::new
with the file name of this
entry.
Note that this always returns the path reported by the underlying
directory entry, even when symbolic links are followed. To get the
target path, use path_is_symlink
to (cheaply) check if this entry
corresponds to a symbolic link, and std::fs::read_link
to resolve
the target.
sourcepub fn into_path(self) -> PathBuf
pub fn into_path(self) -> PathBuf
The full path that this entry represents.
Analogous to path
, but moves ownership of the path.
sourcepub fn path_is_symlink(&self) -> bool
pub fn path_is_symlink(&self) -> bool
Returns true
if and only if this entry was created from a symbolic
link. This is unaffected by the follow_links
setting.
When true
, the value returned by the path
method is a
symbolic link name. To get the full target path, you must call
std::fs::read_link(entry.path())
.
sourcepub fn metadata(&self) -> Result<Metadata>
pub fn metadata(&self) -> Result<Metadata>
Return the metadata for the file that this entry points to.
This will follow symbolic links if and only if the WalkDir
value
has follow_links
enabled.
§Platform behavior
This always calls std::fs::symlink_metadata
.
If this entry is a symbolic link and follow_links
is enabled, then
std::fs::metadata
is called instead.
§Errors
Similar to std::fs::metadata
, returns errors for path values that
the program does not have permissions to access or if the path does not
exist.
fn metadata_internal(&self) -> Result<Metadata>
sourcepub fn file_type(&self) -> FileType
pub fn file_type(&self) -> FileType
Return the file type for the file that this entry points to.
If this is a symbolic link and follow_links
is true
, then this
returns the type of the target.
This never makes any system calls.
sourcepub fn file_name(&self) -> &OsStr
pub fn file_name(&self) -> &OsStr
Return the file name of this entry.
If this entry has no file name (e.g., /
), then the full path is
returned.
sourcepub fn depth(&self) -> usize
pub fn depth(&self) -> usize
Returns the depth at which this entry was created 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.
sourcepub(crate) fn is_dir(&self) -> bool
pub(crate) fn is_dir(&self) -> bool
Returns true if and only if this entry points to a directory.
pub(crate) fn from_entry(depth: usize, ent: &DirEntry) -> Result<DirEntry>
pub(crate) fn from_path( depth: usize, pb: PathBuf, follow: bool, ) -> Result<DirEntry>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for DirEntry
impl RefUnwindSafe for DirEntry
impl Send for DirEntry
impl Sync for DirEntry
impl Unpin for DirEntry
impl UnwindSafe for DirEntry
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)