walkdir consists of three important types:
- WalkDir: A builder (see the Using the builder pattern section in Chapter 1, Learning the Basics) for your directory walker
- IntoIter: The iterator created by the builder
- DirEntry: Represents a single folder or file
If you just want to operate on a list of all entries under a root folder, such as in the first example in line [6], you can implicitly use WalkDir directly as an iterator over different instances of DirEntry:
for entry in WalkDir::new(".") {
if let Ok(entry) = entry {
println!("{}", entry.path().display());
}
}
As you can see, the iterator doesn't directly give you a DirEntry, but a Result. This is because there are some cases where accessing a file or folder might prove difficult. For instance, the OS could prohibit you from reading the contents of a folder, hiding the files in it. Or a symlink, which you could enable by calling follow_links(true) on the WalkDir...