Files
noq/pr/708/docs/noq_proto/struct.TransportConfig.html
T

232 lines
75 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="Parameters governing the core QUIC state machine"><title>TransportConfig in noq_proto - 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="noq_proto" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.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-ce535bd0.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 struct"><!--[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="#">TransportConfig</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../noq_proto/index.html">noq_<wbr>proto</a><span class="version">1.0.0</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Transport<wbr>Config</a></h2><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.ack_frequency_config" title="ack_frequency_config">ack_frequency_config</a></li><li><a href="#method.allow_spin" title="allow_spin">allow_spin</a></li><li><a href="#method.congestion_controller_factory" title="congestion_controller_factory">congestion_controller_factory</a></li><li><a href="#method.crypto_buffer_size" title="crypto_buffer_size">crypto_buffer_size</a></li><li><a href="#method.datagram_receive_buffer_size" title="datagram_receive_buffer_size">datagram_receive_buffer_size</a></li><li><a href="#method.datagram_send_buffer_size" title="datagram_send_buffer_size">datagram_send_buffer_size</a></li><li><a href="#method.default_path_keep_alive_interval" title="default_path_keep_alive_interval">default_path_keep_alive_interval</a></li><li><a href="#method.default_path_max_idle_timeout" title="default_path_max_idle_timeout">default_path_max_idle_timeout</a></li><li><a href="#method.enable_segmentation_offload" title="enable_segmentation_offload">enable_segmentation_offload</a></li><li><a href="#method.initial_mtu" title="initial_mtu">initial_mtu</a></li><li><a href="#method.initial_rtt" title="initial_rtt">initial_rtt</a></li><li><a href="#method.keep_alive_interval" title="keep_alive_interval">keep_alive_interval</a></li><li><a href="#method.max_concurrent_bidi_streams" title="max_concurrent_bidi_streams">max_concurrent_bidi_streams</a></li><li><a href="#method.max_concurrent_multipath_paths" title="max_concurrent_multipath_paths">max_concurrent_multipath_paths</a></li><li><a href="#method.max_concurrent_uni_streams" title="max_concurrent_uni_streams">max_concurrent_uni_streams</a></li><li><a href="#method.max_idle_timeout" title="max_idle_timeout">max_idle_timeout</a></li><li><a href="#method.max_outgoing_bytes_per_second" title="max_outgoing_bytes_per_second">max_outgoing_bytes_per_second</a></li><li><a href="#method.max_remote_nat_traversal_addresses" title="max_remote_nat_traversal_addresses">max_remote_nat_traversal_addresses</a></li><li><a href="#method.min_mtu" title="min_mtu">min_mtu</a></li><li><a href="#method.mtu_discovery_config" title="mtu_discovery_config">mtu_discovery_config</a></li><li><a href="#method.packet_threshold" title="packet_threshold">packet_threshold</a></li><li><a href="#method.pad_to_mtu" title="pad_to_mtu">pad_to_mtu</a></li><li><a href="#method.persistent_congestion_threshold" title="persistent_congestion_threshold">persistent_congestion_threshold</a></li><li><a href="#method.qlog_factory" title="qlog_factory">qlog_factory</a></li><li><a href="#method.qlog_from_env" title="qlog_from_env">qlog_from_env</a></li><li><a href="#method.qlog_from_path" title="qlog_from_path">qlog_from_path</a></li><li><a href="#method.receive_observed_address_reports" title="receive_observed_address_reports">receive_observed_address_reports</a></li><li><a href="#method.receive_window" title="receive_window">receive_window</a></li><li><a href="#method.send_fairness" title="send_fairness">send_fairness</a></li><li><a href="#method.send_observed_address_reports" title="send_observed_address_reports">send_observed_address_reports</a></li><li><a href="#method.send_window" title="send_window">send_window</a></li><li><a href="#method.server_handshake_migration" title="server_handshake_migration">server_handshake_migration</a></li><li><a href="#method.stream_receive_window" title="stream_receive_window">stream_receive_window</a></li><li><a href="#method.time_threshold" title="time_threshold">time_threshold</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-TransportConfig" title="Clone">Clone</a></li><li><a href="#impl-Debug-for-TransportConfig" title="Debug">Debug</a></li><li><a href="#impl-Default-for-TransportConfig" title="Default">Default</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-RefUnwindSafe-for-TransportConfig" title="!RefUnwindSafe">!RefUnwindSafe</a></li><li><a href="#impl-UnwindSafe-for-TransportConfig" title="!UnwindSafe">!UnwindSafe</a></li><li><a href="#impl-Freeze-for-TransportConfig" title="Freeze">Freeze</a></li><li><a href="#impl-Send-for-TransportConfig" title="Send">Send</a></li><li><a href="#impl-Sync-for-TransportConfig" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-TransportConfig" 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-CloneToUninit-for-T" title="CloneToUninit">CloneToUninit</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-Instrument-for-T" title="Instrument">Instrument</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-IntoEither-for-T" title="IntoEither">IntoEither</a></li><li><a href="#impl-Same-for-T" title="Same">Same</a></li><li><a href="#impl-ToOwned-for-T" title="ToOwned">ToOwned</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><li><a href="#impl-WithSubscriber-for-T" title="WithSubscriber">WithSubscriber</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate noq_<wbr>proto</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">noq_proto</a></div><h1>Struct <span class="struct">Transport<wbr>Config</span>&nbsp;<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/noq_proto/config/transport.rs.html#30-74">Source</a> </span></div><pre class="rust item-decl"><code>pub struct TransportConfig { <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>Parameters governing the core QUIC state machine</p>
<p>Default values should be suitable for most internet applications. Applications protocols which
forbid remotely-initiated streams should set <code>max_concurrent_bidi_streams</code> and
<code>max_concurrent_uni_streams</code> to zero.</p>
<p>In some cases, performance or resource requirements can be improved by tuning these values to
suit a particular application and/or network connection. In particular, data window sizes can be
tuned for a particular expected round trip time, link capacity, and memory availability. Tuning
for higher bandwidths and latencies increases worst-case memory consumption, but does not impair
performance at lower bandwidths and latencies. The default configuration is tuned for a 100Mbps
link with a 100ms round trip time.</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-TransportConfig" class="impl"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#76-542">Source</a><a href="#impl-TransportConfig" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.TransportConfig.html" title="struct noq_proto::TransportConfig">TransportConfig</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.max_concurrent_bidi_streams" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#83-86">Source</a><h4 class="code-header">pub fn <a href="#method.max_concurrent_bidi_streams" class="fn">max_concurrent_bidi_streams</a>(&amp;mut self, value: <a class="struct" href="struct.VarInt.html" title="struct noq_proto::VarInt">VarInt</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Maximum number of incoming bidirectional streams that may be open concurrently</p>
<p>Must be nonzero for the peer to open any bidirectional streams.</p>
<p>Worst-case memory use is directly proportional to <code>max_concurrent_bidi_streams * stream_receive_window</code>, with an upper bound proportional to <code>receive_window</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.max_concurrent_uni_streams" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#89-92">Source</a><h4 class="code-header">pub fn <a href="#method.max_concurrent_uni_streams" class="fn">max_concurrent_uni_streams</a>(&amp;mut self, value: <a class="struct" href="struct.VarInt.html" title="struct noq_proto::VarInt">VarInt</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Variant of <code>max_concurrent_bidi_streams</code> affecting unidirectional streams</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.max_idle_timeout" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#116-119">Source</a><h4 class="code-header">pub fn <a href="#method.max_idle_timeout" class="fn">max_idle_timeout</a>(&amp;mut self, value: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.IdleTimeout.html" title="struct noq_proto::IdleTimeout">IdleTimeout</a>&gt;) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Maximum duration of inactivity to accept before timing out the connection.</p>
<p>The true idle timeout is the minimum of this and the peers own max idle timeout. <code>None</code>
represents an infinite timeout. Defaults to 30 seconds.</p>
<p><strong>WARNING</strong>: If a peer or its network path malfunctions or acts maliciously, an infinite
idle timeout can result in permanently hung futures!</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>config = TransportConfig::default();
<span class="comment">// Set the idle timeout as `VarInt`-encoded milliseconds
</span>config.max_idle_timeout(<span class="prelude-val">Some</span>(VarInt::from_u32(<span class="number">10_000</span>).into()));
<span class="comment">// Set the idle timeout as a `Duration`
</span>config.max_idle_timeout(<span class="prelude-val">Some</span>(Duration::from_secs(<span class="number">10</span>).try_into()<span class="question-mark">?</span>));</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.stream_receive_window" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#129-132">Source</a><h4 class="code-header">pub fn <a href="#method.stream_receive_window" class="fn">stream_receive_window</a>(&amp;mut self, value: <a class="struct" href="struct.VarInt.html" title="struct noq_proto::VarInt">VarInt</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Maximum number of bytes the peer may transmit without acknowledgement on any one stream
before becoming blocked.</p>
<p>This should be set to at least the expected connection latency multiplied by the maximum
desired throughput. Setting this smaller than <code>receive_window</code> helps ensure that a single
stream doesnt monopolize receive buffers, which may otherwise occur if the application
chooses not to read from a large stream for a time while still requiring data on other
streams.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.receive_window" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#140-143">Source</a><h4 class="code-header">pub fn <a href="#method.receive_window" class="fn">receive_window</a>(&amp;mut self, value: <a class="struct" href="struct.VarInt.html" title="struct noq_proto::VarInt">VarInt</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Maximum number of bytes the peer may transmit across all streams of a connection before
becoming blocked.</p>
<p>This should be set to at least the expected connection latency multiplied by the maximum
desired throughput. Larger values can be useful to allow maximum throughput within a
stream while another is blocked.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.send_window" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#151-154">Source</a><h4 class="code-header">pub fn <a href="#method.send_window" class="fn">send_window</a>(&amp;mut self, value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Maximum number of bytes to transmit to a peer without acknowledgment</p>
<p>Provides an upper bound on memory when communicating with peers that issue large amounts of
flow control credit. Endpoints that wish to handle large numbers of connections robustly
should take care to set this low enough to guarantee memory exhaustion does not occur if
every connection uses the entire window.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.send_fairness" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#166-169">Source</a><h4 class="code-header">pub fn <a href="#method.send_fairness" class="fn">send_fairness</a>(&amp;mut self, value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Whether to implement fair queuing for send streams having the same priority.</p>
<p>When enabled, connections schedule data from outgoing streams having the same priority in a
round-robin fashion. When disabled, streams are scheduled in the order they are written to.</p>
<p>Note that this only affects streams with the same priority. Higher priority streams always
take precedence over lower priority streams.</p>
<p>Disabling fairness can reduce fragmentation and protocol overhead for workloads that use
many small streams.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.packet_threshold" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#173-176">Source</a><h4 class="code-header">pub fn <a href="#method.packet_threshold" class="fn">packet_threshold</a>(&amp;mut self, value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Maximum reordering in packet number space before FACK style loss detection considers a
packet lost. Should not be less than 3, per RFC5681.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.time_threshold" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#180-183">Source</a><h4 class="code-header">pub fn <a href="#method.time_threshold" class="fn">time_threshold</a>(&amp;mut self, value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.f32.html">f32</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Maximum reordering in time space before time based loss detection considers a packet lost,
as a factor of RTT</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.initial_rtt" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#186-189">Source</a><h4 class="code-header">pub fn <a href="#method.initial_rtt" class="fn">initial_rtt</a>(&amp;mut self, value: <a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>The RTT used before an RTT sample is taken</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.initial_mtu" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#199-202">Source</a><h4 class="code-header">pub fn <a href="#method.initial_mtu" class="fn">initial_mtu</a>(&amp;mut self, value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>The initial value to be used as the maximum UDP payload size before running MTU discovery
(see <a href="struct.TransportConfig.html#method.mtu_discovery_config" title="method noq_proto::TransportConfig::mtu_discovery_config"><code>TransportConfig::mtu_discovery_config</code></a>).</p>
<p>Must be at least 1200, which is the default, and known to be safe for typical internet
applications. Larger values are more efficient, but increase the risk of packet loss due to
exceeding the network paths IP MTU. If the provided value is higher than what the network
path actually supports, packet loss will eventually trigger black hole detection and bring
it down to <a href="struct.TransportConfig.html#method.min_mtu" title="method noq_proto::TransportConfig::min_mtu"><code>TransportConfig::min_mtu</code></a>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.min_mtu" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#221-224">Source</a><h4 class="code-header">pub fn <a href="#method.min_mtu" class="fn">min_mtu</a>(&amp;mut self, value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>The maximum UDP payload size guaranteed to be supported by the network.</p>
<p>Must be at least 1200, which is the default, and lower than or equal to
<a href="struct.TransportConfig.html#method.initial_mtu" title="method noq_proto::TransportConfig::initial_mtu"><code>TransportConfig::initial_mtu</code></a>.</p>
<p>Real-world MTUs can vary according to ISP, VPN, and properties of intermediate network links
outside of either endpoints control. Extreme care should be used when raising this value
outside of private networks where these factors are fully controlled. If the provided value
is higher than what the network path actually supports, the result will be unpredictable and
catastrophic packet loss, without a possibility of repair. Prefer
<a href="struct.TransportConfig.html#method.initial_mtu" title="method noq_proto::TransportConfig::initial_mtu"><code>TransportConfig::initial_mtu</code></a> together with
<a href="struct.TransportConfig.html#method.mtu_discovery_config" title="method noq_proto::TransportConfig::mtu_discovery_config"><code>TransportConfig::mtu_discovery_config</code></a> to set a maximum UDP payload size that robustly
adapts to the network.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.mtu_discovery_config" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#229-232">Source</a><h4 class="code-header">pub fn <a href="#method.mtu_discovery_config" class="fn">mtu_discovery_config</a>(
&amp;mut self,
value: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.MtuDiscoveryConfig.html" title="struct noq_proto::MtuDiscoveryConfig">MtuDiscoveryConfig</a>&gt;,
) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Specifies the MTU discovery config (see <a href="struct.MtuDiscoveryConfig.html" title="struct noq_proto::MtuDiscoveryConfig"><code>MtuDiscoveryConfig</code></a> for details).</p>
<p>Enabled by default.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.pad_to_mtu" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#243-246">Source</a><h4 class="code-header">pub fn <a href="#method.pad_to_mtu" class="fn">pad_to_mtu</a>(&amp;mut self, value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Pad UDP datagrams carrying application data to current maximum UDP payload size</p>
<p>Disabled by default. UDP datagrams containing loss probes are exempt from padding.</p>
<p>Enabling this helps mitigate traffic analysis by network observers, but it increases
bandwidth usage. Without this mitigation precise plain text size of application datagrams as
well as the total size of stream write bursts can be inferred by observers under certain
conditions. This analysis requires either an uncongested connection or application datagrams
too large to be coalesced.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.ack_frequency_config" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#256-259">Source</a><h4 class="code-header">pub fn <a href="#method.ack_frequency_config" class="fn">ack_frequency_config</a>(
&amp;mut self,
value: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.AckFrequencyConfig.html" title="struct noq_proto::AckFrequencyConfig">AckFrequencyConfig</a>&gt;,
) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Specifies the ACK frequency config (see <a href="struct.AckFrequencyConfig.html" title="struct noq_proto::AckFrequencyConfig"><code>AckFrequencyConfig</code></a> for details)</p>
<p>The provided configuration will be ignored if the peer does not support the acknowledgement
frequency QUIC extension.</p>
<p>Defaults to <code>None</code>, which disables controlling the peers acknowledgement frequency. Even
if set to <code>None</code>, the local side still supports the acknowledgement frequency QUIC
extension and may use it in other ways.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.max_outgoing_bytes_per_second" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#264-267">Source</a><h4 class="code-header">pub fn <a href="#method.max_outgoing_bytes_per_second" class="fn">max_outgoing_bytes_per_second</a>(&amp;mut self, value: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Configures an outbound rate limit (in bytes per second) for each connection.</p>
<p>Defaults to <code>None</code>, which disables rate limiting.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.persistent_congestion_threshold" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#270-273">Source</a><h4 class="code-header">pub fn <a href="#method.persistent_congestion_threshold" class="fn">persistent_congestion_threshold</a>(&amp;mut self, value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Number of consecutive PTOs after which network is considered to be experiencing persistent congestion.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.keep_alive_interval" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#282-285">Source</a><h4 class="code-header">pub fn <a href="#method.keep_alive_interval" class="fn">keep_alive_interval</a>(&amp;mut self, value: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt;) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Period of inactivity before sending a keep-alive packet</p>
<p>Keep-alive packets prevent an inactive but otherwise healthy connection from timing out.</p>
<p><code>None</code> to disable, which is the default. Only one side of any given connection needs keep-alive
enabled for the connection to be preserved. Must be set lower than the idle_timeout of both
peers to be effective.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.crypto_buffer_size" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#288-291">Source</a><h4 class="code-header">pub fn <a href="#method.crypto_buffer_size" class="fn">crypto_buffer_size</a>(&amp;mut self, value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Maximum quantity of out-of-order crypto layer data to buffer</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.allow_spin" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#297-300">Source</a><h4 class="code-header">pub fn <a href="#method.allow_spin" class="fn">allow_spin</a>(&amp;mut self, value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Whether the implementation is permitted to set the spin bit on this connection</p>
<p>This allows passive observers to easily judge the round trip time of a connection, which can
be useful for network administration but sacrifices a small amount of privacy.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.datagram_receive_buffer_size" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#308-311">Source</a><h4 class="code-header">pub fn <a href="#method.datagram_receive_buffer_size" class="fn">datagram_receive_buffer_size</a>(
&amp;mut self,
value: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;,
) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Maximum number of incoming application datagram bytes to buffer, or None to disable
incoming datagrams</p>
<p>The peer is forbidden to send single datagrams larger than this size. If the aggregate size
of all datagrams that have been received from the peer but not consumed by the application
exceeds this value, old datagrams are dropped until it is no longer exceeded.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.datagram_send_buffer_size" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#319-322">Source</a><h4 class="code-header">pub fn <a href="#method.datagram_send_buffer_size" class="fn">datagram_send_buffer_size</a>(&amp;mut self, value: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Maximum number of outgoing application datagram bytes to buffer</p>
<p>While datagrams are sent ASAP, it is possible for an application to generate data faster
than the link, or even the underlying hardware, can transmit them. This limits the amount of
memory that may be consumed in that case. When the send buffer is full and a new datagram is
sent, older datagrams are dropped until sufficient space is available.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.congestion_controller_factory" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#345-351">Source</a><h4 class="code-header">pub fn <a href="#method.congestion_controller_factory" class="fn">congestion_controller_factory</a>(
&amp;mut self,
factory: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;dyn <a class="trait" href="congestion/trait.ControllerFactory.html" title="trait noq_proto::congestion::ControllerFactory">ControllerFactory</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + 'static&gt;,
) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>How to construct new <code>congestion::Controller</code>s</p>
<p>Typically the refcounted configuration of a <code>congestion::Controller</code>,
e.g. a <code>congestion::NewRenoConfig</code>.</p>
<h5 id="example"><a class="doc-anchor" href="#example">§</a>Example</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>config = TransportConfig::default();
config.congestion_controller_factory(Arc::new(congestion::NewRenoConfig::default()));</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.enable_segmentation_offload" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#363-366">Source</a><h4 class="code-header">pub fn <a href="#method.enable_segmentation_offload" class="fn">enable_segmentation_offload</a>(&amp;mut self, enabled: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Whether to use “Generic Segmentation Offload” to accelerate transmits, when supported by the
environment</p>
<p>Defaults to <code>true</code>.</p>
<p>GSO dramatically reduces CPU consumption when sending large numbers of packets with the same
headers, such as when transmitting bulk data on a connection. However, it is not supported
by all network interface drivers or packet inspection tools. <code>noq-udp</code> will attempt to
disable GSO automatically when unavailable, but this can lead to spurious packet loss at
startup, temporarily degrading performance.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.send_observed_address_reports" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#372-375">Source</a><h4 class="code-header">pub fn <a href="#method.send_observed_address_reports" class="fn">send_observed_address_reports</a>(&amp;mut self, enabled: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Whether to send observed address reports to peers.</p>
<p>This will aid peers in inferring their reachable address, which in most NATd networks
will not be easily available to them.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.receive_observed_address_reports" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#383-386">Source</a><h4 class="code-header">pub fn <a href="#method.receive_observed_address_reports" class="fn">receive_observed_address_reports</a>(&amp;mut self, enabled: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Whether to receive observed address reports from other peers.</p>
<p>Peers with the address discovery extension enabled that are willing to provide observed
address reports will do so if this transport parameter is set. In general, observed address
reports cannot be trusted. This, however, can aid the current endpoint in inferring its
reachable address, which in most NATd networks will not be easily available.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.max_concurrent_multipath_paths" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#396-399">Source</a><h4 class="code-header">pub fn <a href="#method.max_concurrent_multipath_paths" class="fn">max_concurrent_multipath_paths</a>(
&amp;mut self,
max_concurrent: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Enables the Multipath Extension for QUIC.</p>
<p>Setting this to any nonzero value will enable the Multipath Extension for QUIC,
<a href="https://datatracker.ietf.org/doc/draft-ietf-quic-multipath/">https://datatracker.ietf.org/doc/draft-ietf-quic-multipath/</a>.</p>
<p>The value provided specifies the number maximum number of paths this endpoint may open
concurrently when multipath is negotiated. For any path to be opened, the remote must
enable multipath as well.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.default_path_max_idle_timeout" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#411-414">Source</a><h4 class="code-header">pub fn <a href="#method.default_path_max_idle_timeout" class="fn">default_path_max_idle_timeout</a>(
&amp;mut self,
timeout: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt;,
) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Sets a default per-path maximum idle timeout</p>
<p>If the path is idle for this long the path will be abandoned. Bear in mind this will
interact with the <a href="struct.TransportConfig.html#method.max_idle_timeout" title="method noq_proto::TransportConfig::max_idle_timeout"><code>TransportConfig::max_idle_timeout</code></a>, if the last path is
abandoned the entire connection will be closed.</p>
<p>You can also change this using <a href="struct.Connection.html#method.set_path_max_idle_timeout" title="method noq_proto::Connection::set_path_max_idle_timeout"><code>Connection::set_path_max_idle_timeout</code></a> for
existing paths.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.default_path_keep_alive_interval" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#427-430">Source</a><h4 class="code-header">pub fn <a href="#method.default_path_keep_alive_interval" class="fn">default_path_keep_alive_interval</a>(
&amp;mut self,
interval: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt;,
) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Sets a default per-path keep alive interval</p>
<p>Note that this does not interact with the connection-wide
<a href="struct.TransportConfig.html#method.keep_alive_interval" title="method noq_proto::TransportConfig::keep_alive_interval"><code>TransportConfig::keep_alive_interval</code></a>. This setting will keep this path active,
<a href="struct.TransportConfig.html#method.keep_alive_interval" title="method noq_proto::TransportConfig::keep_alive_interval"><code>TransportConfig::keep_alive_interval</code></a> will keep the connection active, with no
control over which path is used for this.</p>
<p>You can also change this using <a href="struct.Connection.html#method.set_path_keep_alive_interval" title="method noq_proto::Connection::set_path_keep_alive_interval"><code>Connection::set_path_keep_alive_interval</code></a> for
existing path.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.max_remote_nat_traversal_addresses" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#452-458">Source</a><h4 class="code-header">pub fn <a href="#method.max_remote_nat_traversal_addresses" class="fn">max_remote_nat_traversal_addresses</a>(
&amp;mut self,
max_addresses: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>,
) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Sets the maximum number of nat traversal addresses this endpoint allows the remote to
advertise</p>
<p>Setting this to any nonzero value will enable n0s nat traversal protocol, loosely based in
the Nat Traversal Extension for QUIC, see
<a href="https://www.ietf.org/archive/id/draft-seemann-quic-nat-traversal-02.html">https://www.ietf.org/archive/id/draft-seemann-quic-nat-traversal-02.html</a></p>
<p>This implementation expects the multipath extension to be enabled as well. if not yet
enabled via <a href="struct.TransportConfig.html#method.max_concurrent_multipath_paths" title="method noq_proto::TransportConfig::max_concurrent_multipath_paths"><code>Self::max_concurrent_multipath_paths</code></a>, then that setting is set to 8.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.server_handshake_migration" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#474-477">Source</a><h4 class="code-header">pub fn <a href="#method.server_handshake_migration" class="fn">server_handshake_migration</a>(&amp;mut self, allow_migration: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Sets whether the server is allowed to migrate once during the handshake.</p>
<p><strong>Enabling this is not RFC9000 compliant.</strong></p>
<p>Defaults to <code>false</code>.</p>
<p>Enabling this allows the server to migrate once during the handshake: it can send a
response from a different address than the clients initial packet was sent to. Once
an authenticated Handshake packet is received the server can no longer migrate
during the handshake (or after the handshake if not other extension enables this).</p>
<p>This can be used to duplicate the clients initial packet to multiple addresses for
the server and accept the fastest response. The server will discard all but the
first such initial, considering any remaining as duplicates.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.qlog_factory" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#484-487">Source</a><h4 class="code-header">pub fn <a href="#method.qlog_factory" class="fn">qlog_factory</a>(&amp;mut self, factory: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;dyn <a class="trait" href="trait.QlogFactory.html" title="trait noq_proto::QlogFactory">QlogFactory</a>&gt;) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Configures qlog capturing by setting a <a href="trait.QlogFactory.html" title="trait noq_proto::QlogFactory"><code>QlogFactory</code></a>.</p>
<p>This assigns a <a href="trait.QlogFactory.html" title="trait noq_proto::QlogFactory"><code>QlogFactory</code></a> that produces qlog capture configurations for
individual connections.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.qlog_from_env" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#499-501">Source</a><h4 class="code-header">pub fn <a href="#method.qlog_from_env" class="fn">qlog_from_env</a>(&amp;mut self, prefix: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Configures qlog capturing through the <code>QLOGDIR</code> environment variable.</p>
<p>This uses <a href="struct.QlogFileFactory.html#method.from_env" title="associated function noq_proto::QlogFileFactory::from_env"><code>QlogFileFactory::from_env</code></a> to create a factory to write qlog traces
into the directory set through the <code>QLOGDIR</code> environment variable.</p>
<p>If <code>QLOGDIR</code> is not set, no traces will be written. If <code>QLOGDIR</code> is set to a path
that does not exist, it will be created.</p>
<p>The files will be prefixed with <code>prefix</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.qlog_from_path" class="method"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#508-512">Source</a><h4 class="code-header">pub fn <a href="#method.qlog_from_path" class="fn">qlog_from_path</a>(
&amp;mut self,
path: impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/std/path/struct.Path.html" title="struct std::path::Path">Path</a>&gt;,
prefix: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
) -&gt; &amp;mut Self</h4></section></summary><div class="docblock"><p>Configures qlog capturing into a directory.</p>
<p>This uses <a href="struct.QlogFileFactory.html" title="struct noq_proto::QlogFileFactory"><code>QlogFileFactory</code></a> to create a factory to write qlog traces into
the specified directory. The files will be prefixed with <code>prefix</code>.</p>
</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-TransportConfig" class="impl"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#29">Source</a><a href="#impl-Clone-for-TransportConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.TransportConfig.html" title="struct noq_proto::TransportConfig">TransportConfig</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#29">Source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.TransportConfig.html" title="struct noq_proto::TransportConfig">TransportConfig</a></h4></section></summary><div class='docblock'>Returns a duplicate of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#245-247">Source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: &amp;Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-TransportConfig" class="impl"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#602-695">Source</a><a href="#impl-Debug-for-TransportConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.TransportConfig.html" title="struct noq_proto::TransportConfig">TransportConfig</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#603-694">Source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, fmt: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-TransportConfig" class="impl"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#544-600">Source</a><a href="#impl-Default-for-TransportConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.TransportConfig.html" title="struct noq_proto::TransportConfig">TransportConfig</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../src/noq_proto/config/transport.rs.html#545-599">Source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default">Read more</a></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-TransportConfig" class="impl"><a href="#impl-Freeze-for-TransportConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.TransportConfig.html" title="struct noq_proto::TransportConfig">TransportConfig</a></h3></section><section id="impl-RefUnwindSafe-for-TransportConfig" class="impl"><a href="#impl-RefUnwindSafe-for-TransportConfig" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.TransportConfig.html" title="struct noq_proto::TransportConfig">TransportConfig</a></h3></section><section id="impl-Send-for-TransportConfig" class="impl"><a href="#impl-Send-for-TransportConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.TransportConfig.html" title="struct noq_proto::TransportConfig">TransportConfig</a></h3></section><section id="impl-Sync-for-TransportConfig" class="impl"><a href="#impl-Sync-for-TransportConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.TransportConfig.html" title="struct noq_proto::TransportConfig">TransportConfig</a></h3></section><section id="impl-Unpin-for-TransportConfig" class="impl"><a href="#impl-Unpin-for-TransportConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.TransportConfig.html" title="struct noq_proto::TransportConfig">TransportConfig</a></h3></section><section id="impl-UnwindSafe-for-TransportConfig" class="impl"><a href="#impl-UnwindSafe-for-TransportConfig" class="anchor">§</a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.TransportConfig.html" title="struct noq_proto::TransportConfig">TransportConfig</a></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/nightly/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/nightly/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/nightly/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/nightly/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/nightly/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/nightly/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/nightly/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/nightly/src/core/borrow.rs.html#212">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/nightly/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/nightly/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/nightly/src/core/borrow.rs.html#214">Source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/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/nightly/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/nightly/src/core/borrow.rs.html#221">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/nightly/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/nightly/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/nightly/src/core/borrow.rs.html#222">Source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/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/nightly/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/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-CloneToUninit-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#515">Source</a><a href="#impl-CloneToUninit-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html" title="trait core::clone::CloneToUninit">CloneToUninit</a> for T<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone_to_uninit" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/clone.rs.html#517">Source</a><a href="#method.clone_to_uninit" class="anchor">§</a><h4 class="code-header">unsafe fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit" class="fn">clone_to_uninit</a>(&amp;self, dest: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.pointer.html">*mut </a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>clone_to_uninit</code>)</span></div></span><div class='docblock'>Performs copy-assignment from <code>self</code> to <code>dest</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit">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/nightly/src/core/convert/mod.rs.html#785">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/nightly/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/nightly/src/core/convert/mod.rs.html#788">Source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/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-Instrument-for-T" class="impl"><a href="#impl-Instrument-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; Instrument for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.instrument" class="method trait-impl"><a href="#method.instrument" class="anchor">§</a><h4 class="code-header">fn <a class="fn">instrument</a>(self, span: Span) -&gt; Instrumented&lt;Self&gt;</h4></section></summary><div class='docblock'>Instruments this type with the provided [<code>Span</code>], returning an
<code>Instrumented</code> wrapper. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.in_current_span" class="method trait-impl"><a href="#method.in_current_span" class="anchor">§</a><h4 class="code-header">fn <a class="fn">in_current_span</a>(self) -&gt; Instrumented&lt;Self&gt;</h4></section></summary><div class='docblock'>Instruments this type with the <a href="super::Span::current()">current</a> <a href="crate::Span"><code>Span</code></a>, returning an
<code>Instrumented</code> wrapper. <a>Read more</a></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/nightly/src/core/convert/mod.rs.html#767-769">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/nightly/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/nightly/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/nightly/src/core/convert/mod.rs.html#777">Source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/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/nightly/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-IntoEither-for-T" class="impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#64">Source</a><a href="#impl-IntoEither-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html" title="trait either::into_either::IntoEither">IntoEither</a> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into_either" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#29">Source</a><a href="#method.into_either" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either" class="fn">into_either</a>(self, into_left: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;</h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
if <code>into_left</code> is <code>true</code>.
Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.into_either_with" class="method trait-impl"><a class="src rightside" href="https://docs.rs/either/1/src/either/into_either.rs.html#55-57">Source</a><a href="#method.into_either_with" class="anchor">§</a><h4 class="code-header">fn <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with" class="fn">into_either_with</a>&lt;F&gt;(self, into_left: F) -&gt; <a class="enum" href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either">Either</a>&lt;Self, Self&gt;<div class="where">where
F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(&amp;Self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class='docblock'>Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Left" title="variant either::Either::Left"><code>Left</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
if <code>into_left(&amp;self)</code> returns <code>true</code>.
Converts <code>self</code> into a <a href="https://docs.rs/either/1/either/enum.Either.html#variant.Right" title="variant either::Either::Right"><code>Right</code></a> variant of <a href="https://docs.rs/either/1/either/enum.Either.html" title="enum either::Either"><code>Either&lt;Self, Self&gt;</code></a>
otherwise. <a href="https://docs.rs/either/1/either/into_either/trait.IntoEither.html#method.into_either_with">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Same-for-T" class="impl"><a class="src rightside" href="https://docs.rs/typenum/1.19.0/src/typenum/type_operators.rs.html#34">Source</a><a href="#impl-Same-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://docs.rs/typenum/1.19.0/typenum/type_operators/trait.Same.html" title="trait typenum::type_operators::Same">Same</a> for T</h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Output" class="associatedtype trait-impl"><a class="src rightside" href="https://docs.rs/typenum/1.19.0/src/typenum/type_operators.rs.html#35">Source</a><a href="#associatedtype.Output" class="anchor">§</a><h4 class="code-header">type <a href="https://docs.rs/typenum/1.19.0/typenum/type_operators/trait.Same.html#associatedtype.Output" class="associatedtype">Output</a> = T</h4></section></summary><div class='docblock'>Should always be <code>Self</code></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#84-86">Source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#88">Source</a><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#89">Source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#93">Source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></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/nightly/src/core/convert/mod.rs.html#827-829">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/nightly/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/nightly/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/nightly/src/core/convert/mod.rs.html#831">Source</a><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/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/nightly/src/core/convert/mod.rs.html#834">Source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/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/nightly/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/nightly/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/nightly/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/nightly/src/core/convert/mod.rs.html#811-813">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/nightly/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/nightly/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/nightly/src/core/convert/mod.rs.html#815">Source</a><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/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/nightly/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/nightly/src/core/convert/mod.rs.html#818">Source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/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/nightly/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/nightly/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-WithSubscriber-for-T" class="impl"><a href="#impl-WithSubscriber-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; WithSubscriber for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_subscriber" class="method trait-impl"><a href="#method.with_subscriber" class="anchor">§</a><h4 class="code-header">fn <a class="fn">with_subscriber</a>&lt;S&gt;(self, subscriber: S) -&gt; WithDispatch&lt;Self&gt;<div class="where">where
S: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;Dispatch&gt;,</div></h4></section></summary><div class='docblock'>Attaches the provided <a href="super::Subscriber"><code>Subscriber</code></a> to this type, returning a
[<code>WithDispatch</code>] wrapper. <a>Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.with_current_subscriber" class="method trait-impl"><a href="#method.with_current_subscriber" class="anchor">§</a><h4 class="code-header">fn <a class="fn">with_current_subscriber</a>(self) -&gt; WithDispatch&lt;Self&gt;</h4></section></summary><div class='docblock'>Attaches the current <a href="crate::dispatcher#setting-the-default-subscriber">default</a> <a href="super::Subscriber"><code>Subscriber</code></a> to this type, returning a
[<code>WithDispatch</code>] wrapper. <a>Read more</a></div></details></div></details></div></section></div></main></body></html>