mpvrc/rustix/fs/struct.RawDir.html

99 lines
No EOL
28 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="A directory iterator implemented with getdents."><title>RawDir in rustix::fs - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-42caa33d.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="rustix" data-themes="" data-resource-suffix="" data-rustdoc-version="1.84.1 (e71f9a9a9 2025-01-27)" data-channel="1.84.1" data-search-js="search-92e6798f.js" data-settings-js="settings-0f613d39.js" ><script src="../../static.files/storage-59e33391.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-5f194d8c.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-893ab5e7.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-6580c154.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../rustix/index.html">rustix</a><span class="version">0.38.42</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">RawDir</a></h2><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.is_buffer_empty" title="is_buffer_empty">is_buffer_empty</a></li><li><a href="#method.new" title="new">new</a></li><li><a href="#method.next" title="next">next</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-UnwindSafe-for-RawDir%3C'buf,+Fd%3E" title="!UnwindSafe">!UnwindSafe</a></li><li><a href="#impl-Freeze-for-RawDir%3C'buf,+Fd%3E" title="Freeze">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-RawDir%3C'buf,+Fd%3E" title="RefUnwindSafe">RefUnwindSafe</a></li><li><a href="#impl-Send-for-RawDir%3C'buf,+Fd%3E" title="Send">Send</a></li><li><a href="#impl-Sync-for-RawDir%3C'buf,+Fd%3E" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-RawDir%3C'buf,+Fd%3E" title="Unpin">Unpin</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow&#60;T&#62;">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut&#60;T&#62;">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From&#60;T&#62;">From&#60;T&#62;</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom&#60;U&#62;">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto&#60;U&#62;">TryInto&#60;U&#62;</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="index.html">In rustix::<wbr>fs</a></h2></div></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><rustdoc-search></rustdoc-search><section id="main-content" class="content"><div class="main-heading"><span class="rustdoc-breadcrumbs"><a href="../index.html">rustix</a>::<wbr><a href="index.html">fs</a></span><h1>Struct <span class="struct">RawDir</span><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/rustix/fs/raw_dir.rs.html#20-25">Source</a> </span></div><pre class="rust item-decl"><code>pub struct RawDir&lt;'buf, Fd: <a class="trait" href="../fd/trait.AsFd.html" title="trait rustix::fd::AsFd">AsFd</a>&gt; { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A directory iterator implemented with getdents.</p>
<p>Note: This implementation does not handle growing the buffer. If this
functionality is necessary, youll need to drop the current iterator,
resize the buffer, and then re-create the iterator. The iterator is
guaranteed to continue where it left off provided the file descriptor isnt
changed. See the example in <a href="struct.RawDir.html#method.new" title="associated function rustix::fs::RawDir::new"><code>RawDir::new</code></a>.</p>
</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-RawDir%3C'buf,+Fd%3E" class="impl"><a class="src rightside" href="../../src/rustix/fs/raw_dir.rs.html#27-140">Source</a><a href="#impl-RawDir%3C'buf,+Fd%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'buf, Fd: <a class="trait" href="../fd/trait.AsFd.html" title="trait rustix::fd::AsFd">AsFd</a>&gt; <a class="struct" href="struct.RawDir.html" title="struct rustix::fs::RawDir">RawDir</a>&lt;'buf, Fd&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../src/rustix/fs/raw_dir.rs.html#125-139">Source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(fd: Fd, buf: &amp;'buf mut [<a class="union" href="https://doc.rust-lang.org/1.84.1/core/mem/maybe_uninit/union.MaybeUninit.html" title="union core::mem::maybe_uninit::MaybeUninit">MaybeUninit</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.84.1/std/primitive.u8.html">u8</a>&gt;]) -&gt; Self</h4></section></summary><div class="docblock"><p>Create a new iterator from the given file descriptor and buffer.</p>
<p>Note: the buffer size may be trimmed to accommodate alignment
requirements.</p>
<h5 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples</h5><h6 id="simple-but-non-portable"><a class="doc-anchor" href="#simple-but-non-portable">§</a>Simple but non-portable</h6>
<p>These examples are non-portable, because file systems may not have a
maximum file name length. If you can make assumptions that bound
this length, then these examples may suffice.</p>
<p>Using the heap:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code>
<span class="kw">let </span>fd = openat(
CWD,
<span class="macro">cstr!</span>(<span class="string">"."</span>),
OFlags::RDONLY | OFlags::DIRECTORY | OFlags::CLOEXEC,
Mode::empty(),
)
.unwrap();
<span class="kw">let </span><span class="kw-2">mut </span>buf = Vec::with_capacity(<span class="number">8192</span>);
<span class="kw">let </span><span class="kw-2">mut </span>iter = RawDir::new(fd, buf.spare_capacity_mut());
<span class="kw">while let </span><span class="prelude-val">Some</span>(entry) = iter.next() {
<span class="kw">let </span>entry = entry.unwrap();
<span class="macro">dbg!</span>(<span class="kw-2">&amp;</span>entry);
}</code></pre></div>
<p>Using the stack:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code>
<span class="kw">let </span>fd = openat(
CWD,
<span class="macro">cstr!</span>(<span class="string">"."</span>),
OFlags::RDONLY | OFlags::DIRECTORY | OFlags::CLOEXEC,
Mode::empty(),
)
.unwrap();
<span class="kw">let </span><span class="kw-2">mut </span>buf = [MaybeUninit::uninit(); <span class="number">2048</span>];
<span class="kw">let </span><span class="kw-2">mut </span>iter = RawDir::new(fd, <span class="kw-2">&amp;mut </span>buf);
<span class="kw">while let </span><span class="prelude-val">Some</span>(entry) = iter.next() {
<span class="kw">let </span>entry = entry.unwrap();
<span class="macro">dbg!</span>(<span class="kw-2">&amp;</span>entry);
}</code></pre></div>
<h6 id="portable"><a class="doc-anchor" href="#portable">§</a>Portable</h6>
<p>Heap allocated growing buffer for supporting directory entries with
arbitrarily large file names:</p>
<div class="example-wrap ignore"><a href="#" class="tooltip" title="This example is not tested"></a><pre class="rust rust-example-rendered"><code>
<span class="kw">let </span>fd = openat(
CWD,
<span class="macro">cstr!</span>(<span class="string">"."</span>),
OFlags::RDONLY | OFlags::DIRECTORY | OFlags::CLOEXEC,
Mode::empty(),
)
.unwrap();
<span class="kw">let </span><span class="kw-2">mut </span>buf = Vec::with_capacity(<span class="number">8192</span>);
<span class="lifetime">'read</span>: <span class="kw">loop </span>{
<span class="lifetime">'resize</span>: {
<span class="kw">let </span><span class="kw-2">mut </span>iter = RawDir::new(<span class="kw-2">&amp;</span>fd, buf.spare_capacity_mut());
<span class="kw">while let </span><span class="prelude-val">Some</span>(entry) = iter.next() {
<span class="kw">let </span>entry = <span class="kw">match </span>entry {
<span class="prelude-val">Err</span>(Errno::INVAL) =&gt; <span class="kw">break </span><span class="lifetime">'resize</span>,
r =&gt; r.unwrap(),
};
<span class="macro">dbg!</span>(<span class="kw-2">&amp;</span>entry);
}
<span class="kw">break </span><span class="lifetime">'read</span>;
}
<span class="kw">let </span>new_capacity = buf.capacity() * <span class="number">2</span>;
buf.reserve(new_capacity);
}</code></pre></div>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-RawDir%3C'buf,+Fd%3E-1" class="impl"><a class="src rightside" href="../../src/rustix/fs/raw_dir.rs.html#191-237">Source</a><a href="#impl-RawDir%3C'buf,+Fd%3E-1" class="anchor">§</a><h3 class="code-header">impl&lt;'buf, Fd: <a class="trait" href="../fd/trait.AsFd.html" title="trait rustix::fd::AsFd">AsFd</a>&gt; <a class="struct" href="struct.RawDir.html" title="struct rustix::fs::RawDir">RawDir</a>&lt;'buf, Fd&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.next" class="method"><a class="src rightside" href="../../src/rustix/fs/raw_dir.rs.html#199-228">Source</a><h4 class="code-header">pub fn <a href="#method.next" class="fn">next</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="type" href="../io/type.Result.html" title="type rustix::io::Result">Result</a>&lt;<a class="struct" href="struct.RawDirEntry.html" title="struct rustix::fs::RawDirEntry">RawDirEntry</a>&lt;'_&gt;&gt;&gt;</h4></section></summary><div class="docblock"><p>Identical to <a href="https://doc.rust-lang.org/1.84.1/core/iter/traits/iterator/trait.Iterator.html#tymethod.next" title="method core::iter::traits::iterator::Iterator::next"><code>Iterator::next</code></a> except that <a href="https://doc.rust-lang.org/1.84.1/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" title="associated type core::iter::traits::iterator::Iterator::Item"><code>Iterator::Item</code></a> borrows
from self.</p>
<p>Note: this interface will be broken to implement a stdlib iterator API
with GAT support once one becomes available.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_buffer_empty" class="method"><a class="src rightside" href="../../src/rustix/fs/raw_dir.rs.html#234-236">Source</a><h4 class="code-header">pub fn <a href="#method.is_buffer_empty" class="fn">is_buffer_empty</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.1/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if the internal buffer is empty and will be refilled when
calling <a href="struct.RawDir.html#method.next" title="method rustix::fs::RawDir::next"><code>next</code></a>.</p>
</div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-RawDir%3C'buf,+Fd%3E" class="impl"><a href="#impl-Freeze-for-RawDir%3C'buf,+Fd%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'buf, Fd&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.RawDir.html" title="struct rustix::fs::RawDir">RawDir</a>&lt;'buf, Fd&gt;<div class="where">where
Fd: <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a>,</div></h3></section><section id="impl-RefUnwindSafe-for-RawDir%3C'buf,+Fd%3E" class="impl"><a href="#impl-RefUnwindSafe-for-RawDir%3C'buf,+Fd%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'buf, Fd&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.RawDir.html" title="struct rustix::fs::RawDir">RawDir</a>&lt;'buf, Fd&gt;<div class="where">where
Fd: <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</div></h3></section><section id="impl-Send-for-RawDir%3C'buf,+Fd%3E" class="impl"><a href="#impl-Send-for-RawDir%3C'buf,+Fd%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'buf, Fd&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.RawDir.html" title="struct rustix::fs::RawDir">RawDir</a>&lt;'buf, Fd&gt;<div class="where">where
Fd: <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</div></h3></section><section id="impl-Sync-for-RawDir%3C'buf,+Fd%3E" class="impl"><a href="#impl-Sync-for-RawDir%3C'buf,+Fd%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'buf, Fd&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.RawDir.html" title="struct rustix::fs::RawDir">RawDir</a>&lt;'buf, Fd&gt;<div class="where">where
Fd: <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</div></h3></section><section id="impl-Unpin-for-RawDir%3C'buf,+Fd%3E" class="impl"><a href="#impl-Unpin-for-RawDir%3C'buf,+Fd%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'buf, Fd&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.RawDir.html" title="struct rustix::fs::RawDir">RawDir</a>&lt;'buf, Fd&gt;<div class="where">where
Fd: <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</div></h3></section><section id="impl-UnwindSafe-for-RawDir%3C'buf,+Fd%3E" class="impl"><a href="#impl-UnwindSafe-for-RawDir%3C'buf,+Fd%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'buf, Fd&gt; !<a class="trait" href="https://doc.rust-lang.org/1.84.1/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.RawDir.html" title="struct rustix::fs::RawDir">RawDir</a>&lt;'buf, Fd&gt;</h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.1/src/core/any.rs.html#138">Source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.84.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.1/src/core/any.rs.html#139">Source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.1/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.84.1/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/1.84.1/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.1/src/core/borrow.rs.html#209">Source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.84.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.1/src/core/borrow.rs.html#211">Source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.1/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.1/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.84.1/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.1/src/core/borrow.rs.html#217">Source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.84.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.1/src/core/borrow.rs.html#218">Source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.1/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.84.1/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.84.1/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.1/src/core/convert/mod.rs.html#765">Source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.1/src/core/convert/mod.rs.html#768">Source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.1/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.1/src/core/convert/mod.rs.html#748-750">Source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.1/src/core/convert/mod.rs.html#758">Source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.1/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
<p>That is, this conversion is whatever the implementation of
<code><a href="https://doc.rust-lang.org/1.84.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.1/src/core/convert/mod.rs.html#805-807">Source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.1/src/core/convert/mod.rs.html#809">Source</a><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.1/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.84.1/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.1/src/core/convert/mod.rs.html#812">Source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.1/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.1/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.1/src/core/convert/mod.rs.html#790-792">Source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.1/src/core/convert/mod.rs.html#794">Source</a><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.84.1/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.1/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.84.1/src/core/convert/mod.rs.html#797">Source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.84.1/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.84.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.84.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.84.1/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>