This repository has been archived on 2022-04-04. You can view files and clone it, but cannot push or open issues or pull requests.

71 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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">&#9776;</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">&#x2212;</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 projects
<code>Cargo.toml</code>:</p>
<div class="example-wrap"><pre class="language-toml"><code>[dependencies]
walkdir = &quot;2&quot;</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">&quot;foo&quot;</span>) {
<span class="macro">println!</span>(<span class="string">&quot;{}&quot;</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 youd 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">&quot;foo&quot;</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">&quot;{}&quot;</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">&quot;foo&quot;</span>).<span class="ident">follow_links</span>(<span class="bool-val">true</span>) {
<span class="macro">println!</span>(<span class="string">&quot;{}&quot;</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">&amp;</span><span class="ident">DirEntry</span>) -&gt; <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">&quot;.&quot;</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">&quot;foo&quot;</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">&quot;{}&quot;</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>