Files
GopherGate/target/doc/socket2/struct.SockAddr.html
2026-02-26 12:00:21 -05:00

121 lines
58 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="The address of a socket."><title>SockAddr in socket2 - 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="socket2" 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 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="#">SockAddr</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../socket2/index.html">socket2</a><span class="version">0.6.2</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Sock<wbr>Addr</a></h2><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.as_abstract_namespace" title="as_abstract_namespace">as_abstract_namespace</a></li><li><a href="#method.as_pathname" title="as_pathname">as_pathname</a></li><li><a href="#method.as_ptr" title="as_ptr">as_ptr</a></li><li><a href="#method.as_socket" title="as_socket">as_socket</a></li><li><a href="#method.as_socket_ipv4" title="as_socket_ipv4">as_socket_ipv4</a></li><li><a href="#method.as_socket_ipv6" title="as_socket_ipv6">as_socket_ipv6</a></li><li><a href="#method.as_storage" title="as_storage">as_storage</a></li><li><a href="#method.as_unix" title="as_unix">as_unix</a></li><li><a href="#method.as_vsock_address" title="as_vsock_address">as_vsock_address</a></li><li><a href="#method.domain" title="domain">domain</a></li><li><a href="#method.family" title="family">family</a></li><li><a href="#method.is_ipv4" title="is_ipv4">is_ipv4</a></li><li><a href="#method.is_ipv6" title="is_ipv6">is_ipv6</a></li><li><a href="#method.is_unix" title="is_unix">is_unix</a></li><li><a href="#method.is_unnamed" title="is_unnamed">is_unnamed</a></li><li><a href="#method.len" title="len">len</a></li><li><a href="#method.new" title="new">new</a></li><li><a href="#method.set_length" title="set_length">set_length</a></li><li><a href="#method.try_init" title="try_init">try_init</a></li><li><a href="#method.unix" title="unix">unix</a></li><li><a href="#method.vsock" title="vsock">vsock</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-SockAddr" title="Clone">Clone</a></li><li><a href="#impl-Debug-for-SockAddr" title="Debug">Debug</a></li><li><a href="#impl-Eq-for-SockAddr" title="Eq">Eq</a></li><li><a href="#impl-From%3CSocketAddr%3E-for-SockAddr" title="From&#60;SocketAddr&#62;">From&#60;SocketAddr&#62;</a></li><li><a href="#impl-From%3CSocketAddrV4%3E-for-SockAddr" title="From&#60;SocketAddrV4&#62;">From&#60;SocketAddrV4&#62;</a></li><li><a href="#impl-From%3CSocketAddrV6%3E-for-SockAddr" title="From&#60;SocketAddrV6&#62;">From&#60;SocketAddrV6&#62;</a></li><li><a href="#impl-Hash-for-SockAddr" title="Hash">Hash</a></li><li><a href="#impl-PartialEq-for-SockAddr" title="PartialEq">PartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-SockAddr" title="Freeze">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-SockAddr" title="RefUnwindSafe">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SockAddr" title="Send">Send</a></li><li><a href="#impl-Sync-for-SockAddr" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-SockAddr" title="Unpin">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SockAddr" title="UnwindSafe">UnwindSafe</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-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</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></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate socket2</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">socket2</a></div><h1>Struct <span class="struct">Sock<wbr>Addr</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/socket2/sockaddr.rs.html#91-94">Source</a> </span></div><pre class="rust item-decl"><code>pub struct SockAddr { <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>The address of a socket.</p>
<p><code>SockAddr</code>s may be constructed directly to and from the standard library
<a href="https://doc.rust-lang.org/1.93.1/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr"><code>SocketAddr</code></a>, <a href="https://doc.rust-lang.org/1.93.1/core/net/socket_addr/struct.SocketAddrV4.html" title="struct core::net::socket_addr::SocketAddrV4"><code>SocketAddrV4</code></a>, and <a href="https://doc.rust-lang.org/1.93.1/core/net/socket_addr/struct.SocketAddrV6.html" title="struct core::net::socket_addr::SocketAddrV6"><code>SocketAddrV6</code></a> types.</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-SockAddr" class="impl"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#97-333">Source</a><a href="#impl-SockAddr" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#142-147">Source</a><h4 class="code-header">pub const unsafe fn <a href="#method.new" class="fn">new</a>(storage: <a class="struct" href="struct.SockAddrStorage.html" title="struct socket2::SockAddrStorage">SockAddrStorage</a>, len: <a class="type" href="type.socklen_t.html" title="type socket2::socklen_t">socklen_t</a>) -&gt; <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h4></section></summary><div class="docblock"><p>Create a <code>SockAddr</code> from the underlying storage and its length.</p>
<h5 id="safety"><a class="doc-anchor" href="#safety">§</a>Safety</h5>
<p>Caller must ensure that the address family and length match the type of
storage address. For example if <code>storage.ss_family</code> is set to <code>AF_INET</code>
the <code>storage</code> must be initialised as <code>sockaddr_in</code>, setting the content
and length appropriately.</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>std::io;
<span class="kw">use </span>std::os::fd::AsRawFd;
<span class="kw">use </span>socket2::{SockAddr, SockAddrStorage, Socket, Domain, Type};
<span class="kw">let </span>socket = Socket::new(Domain::IPV4, Type::STREAM, <span class="prelude-val">None</span>)<span class="question-mark">?</span>;
<span class="comment">// Initialise a `SocketAddr` by calling `getsockname(2)`.
</span><span class="kw">let </span><span class="kw-2">mut </span>addr_storage = SockAddrStorage::zeroed();
<span class="kw">let </span><span class="kw-2">mut </span>len = addr_storage.size_of();
<span class="comment">// The `getsockname(2)` system call will initialize `storage` for
// us, setting `len` to the correct length.
</span><span class="kw">let </span>res = <span class="kw">unsafe </span>{
libc::getsockname(
socket.as_raw_fd(),
addr_storage.view_as(),
<span class="kw-2">&amp;mut </span>len,
)
};
<span class="kw">if </span>res == -<span class="number">1 </span>{
<span class="kw">return </span><span class="prelude-val">Err</span>(io::Error::last_os_error());
}
<span class="kw">let </span>address = <span class="kw">unsafe </span>{ SockAddr::new(addr_storage, len) };</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.try_init" class="method"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#194-210">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.try_init" class="fn">try_init</a>&lt;F, T&gt;(init: F) -&gt; <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>&lt;(T, <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a>)&gt;<div class="where">where
F: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.pointer.html">*mut </a><a class="struct" href="struct.SockAddrStorage.html" title="struct socket2::SockAddrStorage">SockAddrStorage</a>, <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.pointer.html">*mut </a><a class="type" href="type.socklen_t.html" title="type socket2::socklen_t">socklen_t</a>) -&gt; <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>&lt;T&gt;,</div></h4></section></summary><div class="docblock"><p>Initialise a <code>SockAddr</code> by calling the function <code>init</code>.</p>
<p>The type of the address storage and length passed to the function <code>init</code>
is OS/architecture specific.</p>
<p>The address is zeroed before <code>init</code> is called and is thus valid to
dereference and read from. The length initialised to the maximum length
of the storage.</p>
<h5 id="safety-1"><a class="doc-anchor" href="#safety-1">§</a>Safety</h5>
<p>Caller must ensure that the address family and length match the type of
storage address. For example if <code>storage.ss_family</code> is set to <code>AF_INET</code>
the <code>storage</code> must be initialised as <code>sockaddr_in</code>, setting the content
and length appropriately.</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>std::io;
<span class="kw">use </span>std::os::fd::AsRawFd;
<span class="kw">use </span>socket2::{SockAddr, Socket, Domain, Type};
<span class="kw">let </span>socket = Socket::new(Domain::IPV4, Type::STREAM, <span class="prelude-val">None</span>)<span class="question-mark">?</span>;
<span class="comment">// Initialise a `SocketAddr` by calling `getsockname(2)`.
</span><span class="kw">let </span>(<span class="kw">_</span>, address) = <span class="kw">unsafe </span>{
SockAddr::try_init(|addr_storage, len| {
<span class="comment">// The `getsockname(2)` system call will initialize `storage` for
// us, setting `len` to the correct length.
</span><span class="kw">if </span>libc::getsockname(socket.as_raw_fd(), addr_storage.cast(), len) == -<span class="number">1 </span>{
<span class="prelude-val">Err</span>(io::Error::last_os_error())
} <span class="kw">else </span>{
<span class="prelude-val">Ok</span>(())
}
})
}<span class="question-mark">?</span>;</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.unix" class="method"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#215-220">Source</a><h4 class="code-header">pub fn <a href="#method.unix" class="fn">unix</a>&lt;P&gt;(path: P) -&gt; <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>&lt;<a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a>&gt;<div class="where">where
P: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.93.1/std/path/struct.Path.html" title="struct std::path::Path">Path</a>&gt;,</div></h4></section></summary><div class="docblock"><p>Constructs a <code>SockAddr</code> with the family <code>AF_UNIX</code> and the provided path.</p>
<p>Returns an error if the path is longer than <code>SUN_LEN</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_length" class="method"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#228-230">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.set_length" class="fn">set_length</a>(&amp;mut self, length: <a class="type" href="type.socklen_t.html" title="type socket2::socklen_t">socklen_t</a>)</h4></section></summary><div class="docblock"><p>Set the length of the address.</p>
<h5 id="safety-2"><a class="doc-anchor" href="#safety-2">§</a>Safety</h5>
<p>Caller must ensure that the address up to <code>length</code> bytes are properly
initialised.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.family" class="method"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#233-235">Source</a><h4 class="code-header">pub const fn <a href="#method.family" class="fn">family</a>(&amp;self) -&gt; <a class="type" href="type.sa_family_t.html" title="type socket2::sa_family_t">sa_family_t</a></h4></section></summary><div class="docblock"><p>Returns this addresss family.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.domain" class="method"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#238-240">Source</a><h4 class="code-header">pub const fn <a href="#method.domain" class="fn">domain</a>(&amp;self) -&gt; <a class="struct" href="struct.Domain.html" title="struct socket2::Domain">Domain</a></h4></section></summary><div class="docblock"><p>Returns this addresss <code>Domain</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.len" class="method"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#243-245">Source</a><h4 class="code-header">pub const fn <a href="#method.len" class="fn">len</a>(&amp;self) -&gt; <a class="type" href="type.socklen_t.html" title="type socket2::socklen_t">socklen_t</a></h4></section></summary><div class="docblock"><p>Returns the size of this address in bytes.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_ptr" class="method"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#248-250">Source</a><h4 class="code-header">pub const fn <a href="#method.as_ptr" class="fn">as_ptr</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.pointer.html">*const </a><a class="struct" href="struct.SockAddrStorage.html" title="struct socket2::SockAddrStorage">SockAddrStorage</a></h4></section></summary><div class="docblock"><p>Returns a raw pointer to the address.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_storage" class="method"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#253-257">Source</a><h4 class="code-header">pub const fn <a href="#method.as_storage" class="fn">as_storage</a>(self) -&gt; <a class="struct" href="struct.SockAddrStorage.html" title="struct socket2::SockAddrStorage">SockAddrStorage</a></h4></section></summary><div class="docblock"><p>Returns the address as the storage.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_ipv4" class="method"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#260-262">Source</a><h4 class="code-header">pub const fn <a href="#method.is_ipv4" class="fn">is_ipv4</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if this address is in the <code>AF_INET</code> (IPv4) family, false otherwise.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_ipv6" class="method"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#266-268">Source</a><h4 class="code-header">pub const fn <a href="#method.is_ipv6" class="fn">is_ipv6</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if this address is in the <code>AF_INET6</code> (IPv6) family, false
otherwise.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_unix" class="method"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#272-274">Source</a><h4 class="code-header">pub fn <a href="#method.is_unix" class="fn">is_unix</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if this address is of a unix socket (for local interprocess communication),
i.e. it is from the <code>AF_UNIX</code> family, false otherwise.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_socket" class="method"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#278-306">Source</a><h4 class="code-header">pub fn <a href="#method.as_socket" class="fn">as_socket</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="https://doc.rust-lang.org/1.93.1/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>&gt;</h4></section></summary><div class="docblock"><p>Returns this address as a <code>SocketAddr</code> if it is in the <code>AF_INET</code> (IPv4)
or <code>AF_INET6</code> (IPv6) family, otherwise returns <code>None</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_socket_ipv4" class="method"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#310-315">Source</a><h4 class="code-header">pub fn <a href="#method.as_socket_ipv4" class="fn">as_socket_ipv4</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.93.1/core/net/socket_addr/struct.SocketAddrV4.html" title="struct core::net::socket_addr::SocketAddrV4">SocketAddrV4</a>&gt;</h4></section></summary><div class="docblock"><p>Returns this address as a <a href="https://doc.rust-lang.org/1.93.1/core/net/socket_addr/struct.SocketAddrV4.html" title="struct core::net::socket_addr::SocketAddrV4"><code>SocketAddrV4</code></a> if it is in the <code>AF_INET</code>
family.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_socket_ipv6" class="method"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#319-324">Source</a><h4 class="code-header">pub fn <a href="#method.as_socket_ipv6" class="fn">as_socket_ipv6</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.93.1/core/net/socket_addr/struct.SocketAddrV6.html" title="struct core::net::socket_addr::SocketAddrV6">SocketAddrV6</a>&gt;</h4></section></summary><div class="docblock"><p>Returns this address as a <a href="https://doc.rust-lang.org/1.93.1/core/net/socket_addr/struct.SocketAddrV6.html" title="struct core::net::socket_addr::SocketAddrV6"><code>SocketAddrV6</code></a> if it is in the <code>AF_INET6</code>
family.</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-SockAddr-1" class="impl"><a class="src rightside" href="../src/socket2/sys/unix.rs.html#733-860">Source</a><a href="#impl-SockAddr-1" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h3><div class="docblock"><p>Unix only API.</p>
</div></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.vsock" class="method"><a class="src rightside" href="../src/socket2/sys/unix.rs.html#742-752">Source</a><h4 class="code-header">pub fn <a href="#method.vsock" class="fn">vsock</a>(cid: <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u32.html">u32</a>, port: <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u32.html">u32</a>) -&gt; <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h4></section></summary><div class="docblock"><p>Constructs a <code>SockAddr</code> with the family <code>AF_VSOCK</code> and the provided CID/port.</p>
<h5 id="errors"><a class="doc-anchor" href="#errors">§</a>Errors</h5>
<p>This function can never fail. In a future version of this library it will be made
infallible.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_vsock_address" class="method"><a class="src rightside" href="../src/socket2/sys/unix.rs.html#757-765">Source</a><h4 class="code-header">pub fn <a href="#method.as_vsock_address" class="fn">as_vsock_address</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u32.html">u32</a>, <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u32.html">u32</a>)&gt;</h4></section></summary><div class="docblock"><p>Returns this address VSOCK CID/port if it is in the <code>AF_VSOCK</code> family,
otherwise return <code>None</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_unnamed" class="method"><a class="src rightside" href="../src/socket2/sys/unix.rs.html#769-781">Source</a><h4 class="code-header">pub fn <a href="#method.is_unnamed" class="fn">is_unnamed</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if this address is an unnamed address from the <code>AF_UNIX</code> family (for local
interprocess communication), false otherwise.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_unix" class="method"><a class="src rightside" href="../src/socket2/sys/unix.rs.html#824-829">Source</a><h4 class="code-header">pub fn <a href="#method.as_unix" class="fn">as_unix</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.93.1/std/os/unix/net/addr/struct.SocketAddr.html" title="struct std::os::unix::net::addr::SocketAddr">SocketAddr</a>&gt;</h4></section></summary><div class="docblock"><p>Returns this address as Unix <code>SocketAddr</code> if it is an <code>AF_UNIX</code> pathname
address, otherwise returns <code>None</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_pathname" class="method"><a class="src rightside" href="../src/socket2/sys/unix.rs.html#833-840">Source</a><h4 class="code-header">pub fn <a href="#method.as_pathname" class="fn">as_pathname</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" href="https://doc.rust-lang.org/1.93.1/std/path/struct.Path.html" title="struct std::path::Path">Path</a>&gt;</h4></section></summary><div class="docblock"><p>Returns this address as a <code>Path</code> reference if it is an <code>AF_UNIX</code>
pathname address, otherwise returns <code>None</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_abstract_namespace" class="method"><a class="src rightside" href="../src/socket2/sys/unix.rs.html#847-859">Source</a><h4 class="code-header">pub fn <a href="#method.as_abstract_namespace" class="fn">as_abstract_namespace</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>]&gt;</h4></section></summary><div class="docblock"><p>Returns this address as a slice of bytes representing an abstract address if it is an
<code>AF_UNIX</code> abstract address, otherwise returns <code>None</code>.</p>
<p>Abstract addresses are a Linux extension, so this method returns <code>None</code> on all non-Linux
platforms.</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-SockAddr" class="impl"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#90">Source</a><a href="#impl-Clone-for-SockAddr" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</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/socket2/sockaddr.rs.html#90">Source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h4></section></summary><div class='docblock'>Returns a duplicate of the value. <a href="https://doc.rust-lang.org/1.93.1/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/1.93.1/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/1.93.1/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/1.93.1/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-SockAddr" class="impl"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#422-445">Source</a><a href="#impl-Debug-for-SockAddr" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</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/socket2/sockaddr.rs.html#423-444">Source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/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/1.93.1/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/1.93.1/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/1.93.1/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-From%3CSocketAddr%3E-for-SockAddr" class="impl"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#335-342">Source</a><a href="#impl-From%3CSocketAddr%3E-for-SockAddr" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;<a class="enum" href="https://doc.rust-lang.org/1.93.1/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>&gt; for <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></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="../src/socket2/sockaddr.rs.html#336-341">Source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(addr: <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>) -&gt; <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-From%3CSocketAddrV4%3E-for-SockAddr" class="impl"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#344-376">Source</a><a href="#impl-From%3CSocketAddrV4%3E-for-SockAddr" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.93.1/core/net/socket_addr/struct.SocketAddrV4.html" title="struct core::net::socket_addr::SocketAddrV4">SocketAddrV4</a>&gt; for <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-1" class="method trait-impl"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#345-375">Source</a><a href="#method.from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(addr: <a class="struct" href="https://doc.rust-lang.org/1.93.1/core/net/socket_addr/struct.SocketAddrV4.html" title="struct core::net::socket_addr::SocketAddrV4">SocketAddrV4</a>) -&gt; <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-From%3CSocketAddrV6%3E-for-SockAddr" class="impl"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#378-420">Source</a><a href="#impl-From%3CSocketAddrV6%3E-for-SockAddr" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.93.1/core/net/socket_addr/struct.SocketAddrV6.html" title="struct core::net::socket_addr::SocketAddrV6">SocketAddrV6</a>&gt; for <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-2" class="method trait-impl"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#379-419">Source</a><a href="#method.from-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(addr: <a class="struct" href="https://doc.rust-lang.org/1.93.1/core/net/socket_addr/struct.SocketAddrV6.html" title="struct core::net::socket_addr::SocketAddrV6">SocketAddrV6</a>) -&gt; <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h4></section></summary><div class='docblock'>Converts to this type from the input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Hash-for-SockAddr" class="impl"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#455-459">Source</a><a href="#impl-Hash-for-SockAddr" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#456-458">Source</a><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a>&lt;H: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>&gt;(&amp;self, state: <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.reference.html">&amp;mut H</a>)</h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/1.93.1/core/hash/trait.Hasher.html" title="trait core::hash::Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/1.93.1/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="src" href="https://doc.rust-lang.org/1.93.1/src/core/hash/mod.rs.html#235-237">Source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a>&lt;H&gt;(data: &amp;[Self], state: <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.reference.html">&amp;mut H</a>)<div class="where">where
H: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,
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'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/1.93.1/core/hash/trait.Hasher.html" title="trait core::hash::Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/1.93.1/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-SockAddr" class="impl"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#447-451">Source</a><a href="#impl-PartialEq-for-SockAddr" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#448-450">Source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;Self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>self</code> and <code>other</code> values to be equal, and is used by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" 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/1.93.1/src/core/cmp.rs.html#264">Source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>!=</code>. The default implementation is almost always sufficient,
and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-SockAddr" class="impl"><a class="src rightside" href="../src/socket2/sockaddr.rs.html#453">Source</a><a href="#impl-Eq-for-SockAddr" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h3></section></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-SockAddr" class="impl"><a href="#impl-Freeze-for-SockAddr" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h3></section><section id="impl-RefUnwindSafe-for-SockAddr" class="impl"><a href="#impl-RefUnwindSafe-for-SockAddr" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h3></section><section id="impl-Send-for-SockAddr" class="impl"><a href="#impl-Send-for-SockAddr" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h3></section><section id="impl-Sync-for-SockAddr" class="impl"><a href="#impl-Sync-for-SockAddr" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h3></section><section id="impl-Unpin-for-SockAddr" class="impl"><a href="#impl-Unpin-for-SockAddr" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</a></h3></section><section id="impl-UnwindSafe-for-SockAddr" class="impl"><a href="#impl-UnwindSafe-for-SockAddr" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SockAddr.html" title="struct socket2::SockAddr">SockAddr</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/1.93.1/src/core/any.rs.html#138">Source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/any.rs.html#139">Source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.93.1/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/1.93.1/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/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/1.93.1/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/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/1.93.1/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.93.1/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/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/1.93.1/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/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/1.93.1/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.93.1/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-CloneToUninit-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/clone.rs.html#547">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/1.93.1/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/1.93.1/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/1.93.1/src/core/clone.rs.html#549">Source</a><a href="#method.clone_to_uninit" class="anchor">§</a><h4 class="code-header">unsafe fn <a href="https://doc.rust-lang.org/1.93.1/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/1.93.1/std/primitive.pointer.html">*mut </a><a class="primitive" href="https://doc.rust-lang.org/1.93.1/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/1.93.1/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/1.93.1/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/1.93.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-3" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#788">Source</a><a href="#method.from-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/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/1.93.1/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/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/1.93.1/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
<p>That is, this conversion is whatever the implementation of
<code><a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/alloc/borrow.rs.html#85-87">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/1.93.1/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/1.93.1/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/1.93.1/src/alloc/borrow.rs.html#89">Source</a><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.93.1/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/1.93.1/src/alloc/borrow.rs.html#90">Source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/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/1.93.1/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/1.93.1/src/alloc/borrow.rs.html#94">Source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/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/1.93.1/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/1.93.1/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/1.93.1/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/1.93.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/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/1.93.1/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/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/1.93.1/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/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/1.93.1/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/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/1.93.1/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/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/1.93.1/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>