71 lines
13 KiB
HTML
71 lines
13 KiB
HTML
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Crate `walkdir` provides an efficient and cross platform implementation of recursive directory traversal. Several options are exposed to control iteration, such as whether to follow symbolic links (default off), limit the maximum number of simultaneous open file descriptors and the ability to efficiently skip descending into directories."><meta name="keywords" content="rust, rustlang, rust-lang, walkdir"><title>walkdir - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../dark.css" disabled><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../storage.js"></script><script src="../crates.js"></script><script defer src="../main.js"></script>
|
||
<noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../favicon.svg"></head><body class="rustdoc mod crate"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu" role="button">☰</div><a class="sidebar-logo" href="../walkdir/index.html"><div class="logo-container"><img class="rust-logo" src="../rust-logo.png" alt="logo"></div>
|
||
</a><h2 class="location">Crate walkdir</h2><div class="block version"><div class="narrow-helper"></div><p>Version 2.3.2</p></div><div class="sidebar-elems"><a id="all-types" href="all.html"><p>See all walkdir's items</p></a><div class="block items"><ul><li><a href="#structs">Structs</a></li><li><a href="#traits">Traits</a></li><li><a href="#types">Type Definitions</a></li></ul></div><div id="sidebar-vars" data-name="walkdir" data-ty="mod" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../walkdir/index.html"><img class="rust-logo" src="../rust-logo.png" alt="logo"></a><nav class="sub"><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="18" height="18" alt="Pick another theme!" src="../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"></div><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../settings.html" title="settings"><img width="18" height="18" alt="Change settings" src="../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><h1 class="fqn"><span class="in-band">Crate <a class="mod" href="#">walkdir</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span><span class="out-of-band"><span id="render-detail"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span><a class="srclink" href="../src/walkdir/lib.rs.html#1-1161" title="goto source code">[src]</a></span></h1><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Crate <code>walkdir</code> provides an efficient and cross platform implementation
|
||
of recursive directory traversal. Several options are exposed to control
|
||
iteration, such as whether to follow symbolic links (default off), limit the
|
||
maximum number of simultaneous open file descriptors and the ability to
|
||
efficiently skip descending into directories.</p>
|
||
<p>To use this crate, add <code>walkdir</code> as a dependency to your project’s
|
||
<code>Cargo.toml</code>:</p>
|
||
<div class="example-wrap"><pre class="language-toml"><code>[dependencies]
|
||
walkdir = "2"</code></pre></div><h2 id="from-the-top" class="section-header"><a href="#from-the-top">From the top</a></h2>
|
||
<p>The <a href="struct.WalkDir.html"><code>WalkDir</code></a> type builds iterators. The <a href="struct.DirEntry.html"><code>DirEntry</code></a> type describes values
|
||
yielded by the iterator. Finally, the <a href="struct.Error.html"><code>Error</code></a> type is a small wrapper around
|
||
<a href="https://doc.rust-lang.org/stable/std/io/struct.Error.html"><code>std::io::Error</code></a> with additional information, such as if a loop was detected
|
||
while following symbolic links (not enabled by default).</p>
|
||
<h2 id="example" class="section-header"><a href="#example">Example</a></h2>
|
||
<p>The following code recursively iterates over the directory given and prints
|
||
the path for each entry:</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">walkdir::WalkDir</span>;
|
||
|
||
<span class="kw">for</span> <span class="ident">entry</span> <span class="kw">in</span> <span class="ident">WalkDir::new</span>(<span class="string">"foo"</span>) {
|
||
<span class="macro">println!</span>(<span class="string">"{}"</span>, <span class="ident">entry</span><span class="question-mark">?</span>.<span class="ident">path</span>().<span class="ident">display</span>());
|
||
}</code></pre></div>
|
||
<p>Or, if you’d like to iterate over all entries and ignore any errors that
|
||
may arise, use <a href="https://doc.rust-lang.org/stable/std/iter/trait.Iterator.html#method.filter_map"><code>filter_map</code></a>. (e.g., This code below will silently skip
|
||
directories that the owner of the running process does not have permission to
|
||
access.)</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">walkdir::WalkDir</span>;
|
||
|
||
<span class="kw">for</span> <span class="ident">entry</span> <span class="kw">in</span> <span class="ident">WalkDir::new</span>(<span class="string">"foo"</span>).<span class="ident">into_iter</span>().<span class="ident">filter_map</span>(<span class="op">|</span><span class="ident">e</span><span class="op">|</span> <span class="ident">e</span>.<span class="ident">ok</span>()) {
|
||
<span class="macro">println!</span>(<span class="string">"{}"</span>, <span class="ident">entry</span>.<span class="ident">path</span>().<span class="ident">display</span>());
|
||
}</code></pre></div>
|
||
<h2 id="example-follow-symbolic-links" class="section-header"><a href="#example-follow-symbolic-links">Example: follow symbolic links</a></h2>
|
||
<p>The same code as above, except <a href="struct.WalkDir.html#method.follow_links"><code>follow_links</code></a> is enabled:</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">walkdir::WalkDir</span>;
|
||
|
||
<span class="kw">for</span> <span class="ident">entry</span> <span class="kw">in</span> <span class="ident">WalkDir::new</span>(<span class="string">"foo"</span>).<span class="ident">follow_links</span>(<span class="bool-val">true</span>) {
|
||
<span class="macro">println!</span>(<span class="string">"{}"</span>, <span class="ident">entry</span><span class="question-mark">?</span>.<span class="ident">path</span>().<span class="ident">display</span>());
|
||
}</code></pre></div>
|
||
<h2 id="example-skip-hidden-files-and-directories-on-unix" class="section-header"><a href="#example-skip-hidden-files-and-directories-on-unix">Example: skip hidden files and directories on unix</a></h2>
|
||
<p>This uses the <a href="struct.IntoIter.html#method.filter_entry"><code>filter_entry</code></a> iterator adapter to avoid yielding hidden files
|
||
and directories efficiently (i.e. without recursing into hidden directories):</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">walkdir</span>::{<span class="ident">DirEntry</span>, <span class="ident">WalkDir</span>};
|
||
|
||
<span class="kw">fn</span> <span class="ident">is_hidden</span>(<span class="ident">entry</span>: <span class="kw-2">&</span><span class="ident">DirEntry</span>) -> <span class="ident">bool</span> {
|
||
<span class="ident">entry</span>.<span class="ident">file_name</span>()
|
||
.<span class="ident">to_str</span>()
|
||
.<span class="ident">map</span>(<span class="op">|</span><span class="ident">s</span><span class="op">|</span> <span class="ident">s</span>.<span class="ident">starts_with</span>(<span class="string">"."</span>))
|
||
.<span class="ident">unwrap_or</span>(<span class="bool-val">false</span>)
|
||
}
|
||
|
||
<span class="kw">let</span> <span class="ident">walker</span> <span class="op">=</span> <span class="ident">WalkDir::new</span>(<span class="string">"foo"</span>).<span class="ident">into_iter</span>();
|
||
<span class="kw">for</span> <span class="ident">entry</span> <span class="kw">in</span> <span class="ident">walker</span>.<span class="ident">filter_entry</span>(<span class="op">|</span><span class="ident">e</span><span class="op">|</span> <span class="op">!</span><span class="ident">is_hidden</span>(<span class="ident">e</span>)) {
|
||
<span class="macro">println!</span>(<span class="string">"{}"</span>, <span class="ident">entry</span><span class="question-mark">?</span>.<span class="ident">path</span>().<span class="ident">display</span>());
|
||
}</code></pre></div>
|
||
</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2>
|
||
<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.DirEntry.html" title="walkdir::DirEntry struct">DirEntry</a></div><div class="item-right docblock-short"><p>A directory entry.</p>
|
||
</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Error.html" title="walkdir::Error struct">Error</a></div><div class="item-right docblock-short"><p>An error produced by recursively walking a directory.</p>
|
||
</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.FilterEntry.html" title="walkdir::FilterEntry struct">FilterEntry</a></div><div class="item-right docblock-short"><p>A recursive directory iterator that skips entries.</p>
|
||
</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.IntoIter.html" title="walkdir::IntoIter struct">IntoIter</a></div><div class="item-right docblock-short"><p>An iterator for recursively descending into a directory.</p>
|
||
</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.WalkDir.html" title="walkdir::WalkDir struct">WalkDir</a></div><div class="item-right docblock-short"><p>A builder to create an iterator for recursively walking a directory.</p>
|
||
</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2>
|
||
<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.DirEntryExt.html" title="walkdir::DirEntryExt trait">DirEntryExt</a></div><div class="item-right docblock-short"><p>Unix-specific extension methods for <code>walkdir::DirEntry</code></p>
|
||
</div></div></div><h2 id="types" class="small-section-header"><a href="#types">Type Definitions</a></h2>
|
||
<div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="type" href="type.Result.html" title="walkdir::Result type">Result</a></div><div class="item-right docblock-short"><p>A result type for walkdir operations.</p>
|
||
</div></div></div></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../" data-current-crate="walkdir" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.59.0 (9d1b2106e 2022-02-23)" ></div>
|
||
</body></html> |