141 lines
27 KiB
HTML
141 lines
27 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="An extension trait which adds utility methods to `AsyncBufRead` types."><title>AsyncBufReadExt in futures_util::io - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.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"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="futures_util" data-themes="" data-resource-suffix="" data-rustdoc-version="1.93.1 (01f6ddf75 2026-02-11) (Arch Linux rust 1:1.93.1-1)" data-channel="1.93.1" data-search-js="search-9e2438ea.js" data-stringdex-js="stringdex-a3946164.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-a410ff4d.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">AsyncBufReadExt</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../futures_util/index.html">futures_<wbr>util</a><span class="version">0.3.32</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Async<wbr>BufRead<wbr>Ext</a></h2><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.consume_unpin" title="consume_unpin">consume_unpin</a></li><li><a href="#method.fill_buf" title="fill_buf">fill_buf</a></li><li><a href="#method.lines" title="lines">lines</a></li><li><a href="#method.read_line" title="read_line">read_line</a></li><li><a href="#method.read_until" title="read_until">read_until</a></li></ul><h3><a href="#dyn-compatibility">Dyn Compatibility</a></h3><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In futures_<wbr>util::<wbr>io</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">futures_util</a>::<wbr><a href="index.html">io</a></div><h1>Trait <span class="trait">Async<wbr>BufRead<wbr>Ext</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/futures_util/io/mod.rs.html#615-814">Source</a> </span></div><pre class="rust item-decl"><code>pub trait AsyncBufReadExt: <a class="trait" href="trait.AsyncBufRead.html" title="trait futures_util::io::AsyncBufRead">AsyncBufRead</a> {
|
|
// Provided methods
|
|
fn <a href="#method.fill_buf" class="fn">fill_buf</a>(&mut self) -> <a class="struct" href="struct.FillBuf.html" title="struct futures_util::io::FillBuf">FillBuf</a><'_, Self> <a href="#" class="tooltip" data-notable-ty="FillBuf<'_, Self>">ⓘ</a>
|
|
<span class="where">where Self: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a></span> { ... }
|
|
<span class="item-spacer"></span> fn <a href="#method.consume_unpin" class="fn">consume_unpin</a>(&mut self, amt: <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.usize.html">usize</a>)
|
|
<span class="where">where Self: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a></span> { ... }
|
|
<span class="item-spacer"></span> fn <a href="#method.read_until" class="fn">read_until</a><'a>(
|
|
&'a mut self,
|
|
byte: <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>,
|
|
buf: &'a mut <a class="struct" href="https://doc.rust-lang.org/1.93.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>>,
|
|
) -> <a class="struct" href="struct.ReadUntil.html" title="struct futures_util::io::ReadUntil">ReadUntil</a><'a, Self> <a href="#" class="tooltip" data-notable-ty="ReadUntil<'a, Self>">ⓘ</a>
|
|
<span class="where">where Self: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a></span> { ... }
|
|
<span class="item-spacer"></span> fn <a href="#method.read_line" class="fn">read_line</a><'a>(&'a mut self, buf: &'a mut <a class="struct" href="https://doc.rust-lang.org/1.93.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>) -> <a class="struct" href="struct.ReadLine.html" title="struct futures_util::io::ReadLine">ReadLine</a><'a, Self> <a href="#" class="tooltip" data-notable-ty="ReadLine<'a, Self>">ⓘ</a>
|
|
<span class="where">where Self: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a></span> { ... }
|
|
<span class="item-spacer"></span> fn <a href="#method.lines" class="fn">lines</a>(self) -> <a class="struct" href="struct.Lines.html" title="struct futures_util::io::Lines">Lines</a><Self>
|
|
<span class="where">where Self: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span> { ... }
|
|
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>An extension trait which adds utility methods to <code>AsyncBufRead</code> types.</p>
|
|
</div></details><h2 id="provided-methods" class="section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="method.fill_buf" class="method"><a class="src rightside" href="../../src/futures_util/io/mod.rs.html#639-644">Source</a><h4 class="code-header">fn <a href="#method.fill_buf" class="fn">fill_buf</a>(&mut self) -> <a class="struct" href="struct.FillBuf.html" title="struct futures_util::io::FillBuf">FillBuf</a><'_, Self> <a href="#" class="tooltip" data-notable-ty="FillBuf<'_, Self>">ⓘ</a><div class="where">where
|
|
Self: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</div></h4></section></summary><div class="docblock"><p>Creates a future which will wait for a non-empty buffer to be available from this I/O
|
|
object or EOF to be reached.</p>
|
|
<p>This method is the async equivalent to <a href="https://doc.rust-lang.org/1.93.1/std/io/trait.BufRead.html#tymethod.fill_buf" title="method std::io::BufRead::fill_buf"><code>BufRead::fill_buf</code></a>.</p>
|
|
|
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>futures::{io::AsyncBufReadExt <span class="kw">as _</span>, stream::{iter, TryStreamExt <span class="kw">as _</span>}};
|
|
|
|
<span class="kw">let </span><span class="kw-2">mut </span>stream = iter(<span class="macro">vec!</span>[<span class="prelude-val">Ok</span>(<span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>]), <span class="prelude-val">Ok</span>(<span class="macro">vec!</span>[<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>])]).into_async_read();
|
|
|
|
<span class="macro">assert_eq!</span>(stream.fill_buf().<span class="kw">await</span><span class="question-mark">?</span>, <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>]);
|
|
stream.consume_unpin(<span class="number">2</span>);
|
|
|
|
<span class="macro">assert_eq!</span>(stream.fill_buf().<span class="kw">await</span><span class="question-mark">?</span>, <span class="macro">vec!</span>[<span class="number">3</span>]);
|
|
stream.consume_unpin(<span class="number">1</span>);
|
|
|
|
<span class="macro">assert_eq!</span>(stream.fill_buf().<span class="kw">await</span><span class="question-mark">?</span>, <span class="macro">vec!</span>[<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]);
|
|
stream.consume_unpin(<span class="number">3</span>);
|
|
|
|
<span class="macro">assert_eq!</span>(stream.fill_buf().<span class="kw">await</span><span class="question-mark">?</span>, <span class="macro">vec!</span>[]);</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.consume_unpin" class="method"><a class="src rightside" href="../../src/futures_util/io/mod.rs.html#663-668">Source</a><h4 class="code-header">fn <a href="#method.consume_unpin" class="fn">consume_unpin</a>(&mut self, amt: <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.usize.html">usize</a>)<div class="where">where
|
|
Self: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</div></h4></section></summary><div class="docblock"><p>A convenience for calling <a href="trait.AsyncBufRead.html#tymethod.consume" title="method futures_util::io::AsyncBufRead::consume"><code>AsyncBufRead::consume</code></a> on <a href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin"><code>Unpin</code></a> IO types.</p>
|
|
|
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>futures::{io::AsyncBufReadExt <span class="kw">as _</span>, stream::{iter, TryStreamExt <span class="kw">as _</span>}};
|
|
|
|
<span class="kw">let </span><span class="kw-2">mut </span>stream = iter(<span class="macro">vec!</span>[<span class="prelude-val">Ok</span>(<span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>])]).into_async_read();
|
|
|
|
<span class="macro">assert_eq!</span>(stream.fill_buf().<span class="kw">await</span><span class="question-mark">?</span>, <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>]);
|
|
stream.consume_unpin(<span class="number">2</span>);
|
|
|
|
<span class="macro">assert_eq!</span>(stream.fill_buf().<span class="kw">await</span><span class="question-mark">?</span>, <span class="macro">vec!</span>[<span class="number">3</span>]);
|
|
stream.consume_unpin(<span class="number">1</span>);
|
|
|
|
<span class="macro">assert_eq!</span>(stream.fill_buf().<span class="kw">await</span><span class="question-mark">?</span>, <span class="macro">vec!</span>[]);</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.read_until" class="method"><a class="src rightside" href="../../src/futures_util/io/mod.rs.html#711-716">Source</a><h4 class="code-header">fn <a href="#method.read_until" class="fn">read_until</a><'a>(
|
|
&'a mut self,
|
|
byte: <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>,
|
|
buf: &'a mut <a class="struct" href="https://doc.rust-lang.org/1.93.1/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>>,
|
|
) -> <a class="struct" href="struct.ReadUntil.html" title="struct futures_util::io::ReadUntil">ReadUntil</a><'a, Self> <a href="#" class="tooltip" data-notable-ty="ReadUntil<'a, Self>">ⓘ</a><div class="where">where
|
|
Self: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</div></h4></section></summary><div class="docblock"><p>Creates a future which will read all the bytes associated with this I/O
|
|
object into <code>buf</code> until the delimiter <code>byte</code> or EOF is reached.
|
|
This method is the async equivalent to <a href="https://doc.rust-lang.org/1.93.1/std/io/trait.BufRead.html#method.read_until" title="method std::io::BufRead::read_until"><code>BufRead::read_until</code></a>.</p>
|
|
<p>This function will read bytes from the underlying stream until the
|
|
delimiter or EOF is found. Once found, all bytes up to, and including,
|
|
the delimiter (if found) will be appended to <code>buf</code>.</p>
|
|
<p>The returned future will resolve to the number of bytes read once the read
|
|
operation is completed.</p>
|
|
<p>In the case of an error the buffer and the object will be discarded, with
|
|
the error yielded.</p>
|
|
<h5 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples</h5>
|
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>futures::io::{AsyncBufReadExt, Cursor};
|
|
|
|
<span class="kw">let </span><span class="kw-2">mut </span>cursor = Cursor::new(<span class="string">b"lorem-ipsum"</span>);
|
|
<span class="kw">let </span><span class="kw-2">mut </span>buf = <span class="macro">vec!</span>[];
|
|
|
|
<span class="comment">// cursor is at 'l'
|
|
</span><span class="kw">let </span>num_bytes = cursor.read_until(<span class="string">b'-'</span>, <span class="kw-2">&mut </span>buf).<span class="kw">await</span><span class="question-mark">?</span>;
|
|
<span class="macro">assert_eq!</span>(num_bytes, <span class="number">6</span>);
|
|
<span class="macro">assert_eq!</span>(buf, <span class="string">b"lorem-"</span>);
|
|
buf.clear();
|
|
|
|
<span class="comment">// cursor is at 'i'
|
|
</span><span class="kw">let </span>num_bytes = cursor.read_until(<span class="string">b'-'</span>, <span class="kw-2">&mut </span>buf).<span class="kw">await</span><span class="question-mark">?</span>;
|
|
<span class="macro">assert_eq!</span>(num_bytes, <span class="number">5</span>);
|
|
<span class="macro">assert_eq!</span>(buf, <span class="string">b"ipsum"</span>);
|
|
buf.clear();
|
|
|
|
<span class="comment">// cursor is at EOF
|
|
</span><span class="kw">let </span>num_bytes = cursor.read_until(<span class="string">b'-'</span>, <span class="kw-2">&mut </span>buf).<span class="kw">await</span><span class="question-mark">?</span>;
|
|
<span class="macro">assert_eq!</span>(num_bytes, <span class="number">0</span>);
|
|
<span class="macro">assert_eq!</span>(buf, <span class="string">b""</span>);</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.read_line" class="method"><a class="src rightside" href="../../src/futures_util/io/mod.rs.html#769-774">Source</a><h4 class="code-header">fn <a href="#method.read_line" class="fn">read_line</a><'a>(&'a mut self, buf: &'a mut <a class="struct" href="https://doc.rust-lang.org/1.93.1/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>) -> <a class="struct" href="struct.ReadLine.html" title="struct futures_util::io::ReadLine">ReadLine</a><'a, Self> <a href="#" class="tooltip" data-notable-ty="ReadLine<'a, Self>">ⓘ</a><div class="where">where
|
|
Self: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</div></h4></section></summary><div class="docblock"><p>Creates a future which will read all the bytes associated with this I/O
|
|
object into <code>buf</code> until a newline (the 0xA byte) or EOF is reached,
|
|
This method is the async equivalent to <a href="https://doc.rust-lang.org/1.93.1/std/io/trait.BufRead.html#method.read_line" title="method std::io::BufRead::read_line"><code>BufRead::read_line</code></a>.</p>
|
|
<p>This function will read bytes from the underlying stream until the
|
|
newline delimiter (the 0xA byte) or EOF is found. Once found, all bytes
|
|
up to, and including, the delimiter (if found) will be appended to
|
|
<code>buf</code>.</p>
|
|
<p>The returned future will resolve to the number of bytes read once the read
|
|
operation is completed.</p>
|
|
<p>In the case of an error the buffer and the object will be discarded, with
|
|
the error yielded.</p>
|
|
<h5 id="errors"><a class="doc-anchor" href="#errors">§</a>Errors</h5>
|
|
<p>This function has the same error semantics as <a href="trait.AsyncBufReadExt.html#method.read_until" title="method futures_util::io::AsyncBufReadExt::read_until"><code>read_until</code></a> and will
|
|
also return an error if the read bytes are not valid UTF-8. If an I/O
|
|
error is encountered then <code>buf</code> may contain some bytes already read in
|
|
the event that all data read so far was valid UTF-8.</p>
|
|
<h5 id="examples-1"><a class="doc-anchor" href="#examples-1">§</a>Examples</h5>
|
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>futures::io::{AsyncBufReadExt, Cursor};
|
|
|
|
<span class="kw">let </span><span class="kw-2">mut </span>cursor = Cursor::new(<span class="string">b"foo\nbar"</span>);
|
|
<span class="kw">let </span><span class="kw-2">mut </span>buf = String::new();
|
|
|
|
<span class="comment">// cursor is at 'f'
|
|
</span><span class="kw">let </span>num_bytes = cursor.read_line(<span class="kw-2">&mut </span>buf).<span class="kw">await</span><span class="question-mark">?</span>;
|
|
<span class="macro">assert_eq!</span>(num_bytes, <span class="number">4</span>);
|
|
<span class="macro">assert_eq!</span>(buf, <span class="string">"foo\n"</span>);
|
|
buf.clear();
|
|
|
|
<span class="comment">// cursor is at 'b'
|
|
</span><span class="kw">let </span>num_bytes = cursor.read_line(<span class="kw-2">&mut </span>buf).<span class="kw">await</span><span class="question-mark">?</span>;
|
|
<span class="macro">assert_eq!</span>(num_bytes, <span class="number">3</span>);
|
|
<span class="macro">assert_eq!</span>(buf, <span class="string">"bar"</span>);
|
|
buf.clear();
|
|
|
|
<span class="comment">// cursor is at EOF
|
|
</span><span class="kw">let </span>num_bytes = cursor.read_line(<span class="kw-2">&mut </span>buf).<span class="kw">await</span><span class="question-mark">?</span>;
|
|
<span class="macro">assert_eq!</span>(num_bytes, <span class="number">0</span>);
|
|
<span class="macro">assert_eq!</span>(buf, <span class="string">""</span>);</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.lines" class="method"><a class="src rightside" href="../../src/futures_util/io/mod.rs.html#808-813">Source</a><h4 class="code-header">fn <a href="#method.lines" class="fn">lines</a>(self) -> <a class="struct" href="struct.Lines.html" title="struct futures_util::io::Lines">Lines</a><Self><div class="where">where
|
|
Self: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class="docblock"><p>Returns a stream over the lines of this reader.
|
|
This method is the async equivalent to <a href="https://doc.rust-lang.org/1.93.1/std/io/trait.BufRead.html#method.lines" title="method std::io::BufRead::lines"><code>BufRead::lines</code></a>.</p>
|
|
<p>The stream returned from this function will yield instances of
|
|
<a href="https://doc.rust-lang.org/1.93.1/std/io/error/type.Result.html" title="type std::io::error::Result"><code>io::Result</code></a><code><</code><a href="https://doc.rust-lang.org/1.93.1/alloc/string/struct.String.html" title="struct alloc::string::String"><code>String</code></a><code>></code>. Each string returned will <em>not</em> have a newline
|
|
byte (the 0xA byte) or CRLF (0xD, 0xA bytes) at the end.</p>
|
|
<h5 id="errors-1"><a class="doc-anchor" href="#errors-1">§</a>Errors</h5>
|
|
<p>Each line of the stream has the same error semantics as <a href="trait.AsyncBufReadExt.html#method.read_line" title="method futures_util::io::AsyncBufReadExt::read_line"><code>AsyncBufReadExt::read_line</code></a>.</p>
|
|
<h5 id="examples-2"><a class="doc-anchor" href="#examples-2">§</a>Examples</h5>
|
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>futures::io::{AsyncBufReadExt, Cursor};
|
|
<span class="kw">use </span>futures::stream::StreamExt;
|
|
|
|
<span class="kw">let </span>cursor = Cursor::new(<span class="string">b"lorem\nipsum\xc2\r\ndolor"</span>);
|
|
|
|
<span class="kw">let </span><span class="kw-2">mut </span>lines_stream = cursor.lines().map(|l| l.unwrap_or(String::from(<span class="string">"invalid UTF_8"</span>)));
|
|
<span class="macro">assert_eq!</span>(lines_stream.next().<span class="kw">await</span>, <span class="prelude-val">Some</span>(String::from(<span class="string">"lorem"</span>)));
|
|
<span class="macro">assert_eq!</span>(lines_stream.next().<span class="kw">await</span>, <span class="prelude-val">Some</span>(String::from(<span class="string">"invalid UTF_8"</span>)));
|
|
<span class="macro">assert_eq!</span>(lines_stream.next().<span class="kw">await</span>, <span class="prelude-val">Some</span>(String::from(<span class="string">"dolor"</span>)));
|
|
<span class="macro">assert_eq!</span>(lines_stream.next().<span class="kw">await</span>, <span class="prelude-val">None</span>);</code></pre></div></div></details></div><h2 id="dyn-compatibility" class="section-header">Dyn Compatibility<a href="#dyn-compatibility" class="anchor">§</a></h2><div class="dyn-compatibility-info"><p>This trait is <b>not</b> <a href="https://doc.rust-lang.org/1.93.1/reference/items/traits.html#dyn-compatibility">dyn compatible</a>.</p><p><i>In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.</i></p></div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-AsyncBufReadExt-for-R" class="impl"><a class="src rightside" href="../../src/futures_util/io/mod.rs.html#816">Source</a><a href="#impl-AsyncBufReadExt-for-R" class="anchor">§</a><h3 class="code-header">impl<R: <a class="trait" href="trait.AsyncBufRead.html" title="trait futures_util::io::AsyncBufRead">AsyncBufRead</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>> <a class="trait" href="trait.AsyncBufReadExt.html" title="trait futures_util::io::AsyncBufReadExt">AsyncBufReadExt</a> for R</h3></section></div><script src="../../trait.impl/futures_util/io/trait.AsyncBufReadExt.js" async></script><script type="text/json" id="notable-traits-data">{"FillBuf<'_, Self>":"<h3>Notable traits for <code><a class=\"struct\" href=\"struct.FillBuf.html\" title=\"struct futures_util::io::FillBuf\">FillBuf</a><'a, R></code></h3><pre><code><div class=\"where\">impl<'a, R> <a class=\"trait\" href=\"https://doc.rust-lang.org/1.93.1/core/future/future/trait.Future.html\" title=\"trait core::future::future::Future\">Future</a> for <a class=\"struct\" href=\"struct.FillBuf.html\" title=\"struct futures_util::io::FillBuf\">FillBuf</a><'a, R><div class=\"where\">where\n R: <a class=\"trait\" href=\"trait.AsyncBufRead.html\" title=\"trait futures_util::io::AsyncBufRead\">AsyncBufRead</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/1.93.1/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>,</div></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/1.93.1/core/future/future/trait.Future.html#associatedtype.Output\" class=\"associatedtype\">Output</a> = <a class=\"type\" href=\"https://doc.rust-lang.org/1.93.1/std/io/error/type.Result.html\" title=\"type std::io::error::Result\">Result</a><&'a [<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.93.1/std/primitive.u8.html\">u8</a>]>;</div>","ReadLine<'a, Self>":"<h3>Notable traits for <code><a class=\"struct\" href=\"struct.ReadLine.html\" title=\"struct futures_util::io::ReadLine\">ReadLine</a><'_, R></code></h3><pre><code><div class=\"where\">impl<R: <a class=\"trait\" href=\"trait.AsyncBufRead.html\" title=\"trait futures_util::io::AsyncBufRead\">AsyncBufRead</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/1.93.1/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/1.93.1/core/future/future/trait.Future.html\" title=\"trait core::future::future::Future\">Future</a> for <a class=\"struct\" href=\"struct.ReadLine.html\" title=\"struct futures_util::io::ReadLine\">ReadLine</a><'_, R></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/1.93.1/core/future/future/trait.Future.html#associatedtype.Output\" class=\"associatedtype\">Output</a> = <a class=\"type\" href=\"https://doc.rust-lang.org/1.93.1/std/io/error/type.Result.html\" title=\"type std::io::error::Result\">Result</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.93.1/std/primitive.usize.html\">usize</a>>;</div>","ReadUntil<'a, Self>":"<h3>Notable traits for <code><a class=\"struct\" href=\"struct.ReadUntil.html\" title=\"struct futures_util::io::ReadUntil\">ReadUntil</a><'_, R></code></h3><pre><code><div class=\"where\">impl<R: <a class=\"trait\" href=\"trait.AsyncBufRead.html\" title=\"trait futures_util::io::AsyncBufRead\">AsyncBufRead</a> + ?<a class=\"trait\" href=\"https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html\" title=\"trait core::marker::Sized\">Sized</a> + <a class=\"trait\" href=\"https://doc.rust-lang.org/1.93.1/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a>> <a class=\"trait\" href=\"https://doc.rust-lang.org/1.93.1/core/future/future/trait.Future.html\" title=\"trait core::future::future::Future\">Future</a> for <a class=\"struct\" href=\"struct.ReadUntil.html\" title=\"struct futures_util::io::ReadUntil\">ReadUntil</a><'_, R></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/1.93.1/core/future/future/trait.Future.html#associatedtype.Output\" class=\"associatedtype\">Output</a> = <a class=\"type\" href=\"https://doc.rust-lang.org/1.93.1/std/io/error/type.Result.html\" title=\"type std::io::error::Result\">Result</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.93.1/std/primitive.usize.html\">usize</a>>;</div>"}</script></section></div></main></body></html> |