pub struct SocketAddrV6 { /* private fields */ }
Expand description
An IPv6 socket address.
IPv6 socket addresses consist of an IPv6
address, a 16-bit port number, as well
as fields containing the traffic class, the flow label, and a scope identifier
(see IETF RFC 2553, Section 3.3 for more details).
See SocketAddr
for a type encompassing both IPv4 and IPv6 socket addresses.
The size of a SocketAddrV6
struct may vary depending on the target operating
system. Do not assume that this type has the same memory layout as the underlying
system representation.
§Textual representation
SocketAddrV6
provides a FromStr
implementation,
based on the bracketed format recommended by IETF RFC 5952,
with scope identifiers based on those specified in IETF RFC 4007.
It accepts addresses consisting of the following elements, in order:
- A left square bracket (
[
) - The textual representation of an IPv6 address
- Optionally, a percent sign (
%
) followed by the scope identifier encoded as a decimal integer - A right square bracket (
]
) - A colon (
:
) - The port, encoded as a decimal integer.
For example, the string [2001:db8::413]:443
represents a SocketAddrV6
with the address 2001:db8::413
and port 443
. The string
[2001:db8::413%612]:443
represents the same address and port, with a
scope identifier of 612
.
Other formats are not accepted.
§Examples
use std::net::{Ipv6Addr, SocketAddrV6};
let socket = SocketAddrV6::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
assert_eq!("[2001:db8::1]:8080".parse(), Ok(socket));
assert_eq!(socket.ip(), &Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1));
assert_eq!(socket.port(), 8080);
let mut with_scope = socket.clone();
with_scope.set_scope_id(3);
assert_eq!("[2001:db8::1%3]:8080".parse(), Ok(with_scope));
Implementations§
Source§impl SocketAddrV6
impl SocketAddrV6
Sourcepub fn parse_ascii(b: &[u8]) -> Result<SocketAddrV6, AddrParseError> ⓘ
🔬This is a nightly-only experimental API. (addr_parse_ascii
)Available on crate feature std
only.
pub fn parse_ascii(b: &[u8]) -> Result<SocketAddrV6, AddrParseError> ⓘ
addr_parse_ascii
)std
only.Parse an IPv6 socket address from a slice of bytes.
#![feature(addr_parse_ascii)]
use std::net::{Ipv6Addr, SocketAddrV6};
let socket = SocketAddrV6::new(Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
assert_eq!(SocketAddrV6::parse_ascii(b"[2001:db8::1]:8080"), Ok(socket));
Source§impl SocketAddrV6
impl SocketAddrV6
1.0.0 (const: 1.69.0) · Sourcepub const fn new(
ip: Ipv6Addr,
port: u16,
flowinfo: u32,
scope_id: u32,
) -> SocketAddrV6
Available on crate feature std
only.
pub const fn new( ip: Ipv6Addr, port: u16, flowinfo: u32, scope_id: u32, ) -> SocketAddrV6
std
only.Creates a new socket address from an IPv6
address, a 16-bit port number,
and the flowinfo
and scope_id
fields.
For more information on the meaning and layout of the flowinfo
and scope_id
parameters, see IETF RFC 2553, Section 3.3.
§Examples
use std::net::{SocketAddrV6, Ipv6Addr};
let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
1.0.0 (const: 1.69.0) · Sourcepub const fn ip(&self) -> &Ipv6Addr
Available on crate feature std
only.
pub const fn ip(&self) -> &Ipv6Addr
std
only.Returns the IP address associated with this socket address.
§Examples
use std::net::{SocketAddrV6, Ipv6Addr};
let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
assert_eq!(socket.ip(), &Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1));
1.9.0 (const: unstable) · Sourcepub fn set_ip(&mut self, new_ip: Ipv6Addr)
Available on crate feature std
only.
pub fn set_ip(&mut self, new_ip: Ipv6Addr)
std
only.Changes the IP address associated with this socket address.
§Examples
use std::net::{SocketAddrV6, Ipv6Addr};
let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
socket.set_ip(Ipv6Addr::new(76, 45, 0, 0, 0, 0, 0, 0));
assert_eq!(socket.ip(), &Ipv6Addr::new(76, 45, 0, 0, 0, 0, 0, 0));
1.0.0 (const: 1.69.0) · Sourcepub const fn port(&self) -> u16 ⓘ
Available on crate feature std
only.
pub const fn port(&self) -> u16 ⓘ
std
only.Returns the port number associated with this socket address.
§Examples
use std::net::{SocketAddrV6, Ipv6Addr};
let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
assert_eq!(socket.port(), 8080);
1.9.0 (const: unstable) · Sourcepub fn set_port(&mut self, new_port: u16)
Available on crate feature std
only.
pub fn set_port(&mut self, new_port: u16)
std
only.Changes the port number associated with this socket address.
§Examples
use std::net::{SocketAddrV6, Ipv6Addr};
let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 0);
socket.set_port(4242);
assert_eq!(socket.port(), 4242);
1.0.0 (const: 1.69.0) · Sourcepub const fn flowinfo(&self) -> u32 ⓘ
Available on crate feature std
only.
pub const fn flowinfo(&self) -> u32 ⓘ
std
only.Returns the flow information associated with this address.
This information corresponds to the sin6_flowinfo
field in C’s netinet/in.h
,
as specified in IETF RFC 2553, Section 3.3.
It combines information about the flow label and the traffic class as specified
in IETF RFC 2460, respectively Section 6 and Section 7.
§Examples
use std::net::{SocketAddrV6, Ipv6Addr};
let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 10, 0);
assert_eq!(socket.flowinfo(), 10);
1.9.0 (const: unstable) · Sourcepub fn set_flowinfo(&mut self, new_flowinfo: u32)
Available on crate feature std
only.
pub fn set_flowinfo(&mut self, new_flowinfo: u32)
std
only.Changes the flow information associated with this socket address.
See SocketAddrV6::flowinfo
’s documentation for more details.
§Examples
use std::net::{SocketAddrV6, Ipv6Addr};
let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 10, 0);
socket.set_flowinfo(56);
assert_eq!(socket.flowinfo(), 56);
1.0.0 (const: 1.69.0) · Sourcepub const fn scope_id(&self) -> u32 ⓘ
Available on crate feature std
only.
pub const fn scope_id(&self) -> u32 ⓘ
std
only.Returns the scope ID associated with this address.
This information corresponds to the sin6_scope_id
field in C’s netinet/in.h
,
as specified in IETF RFC 2553, Section 3.3.
§Examples
use std::net::{SocketAddrV6, Ipv6Addr};
let socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 78);
assert_eq!(socket.scope_id(), 78);
1.9.0 (const: unstable) · Sourcepub fn set_scope_id(&mut self, new_scope_id: u32)
Available on crate feature std
only.
pub fn set_scope_id(&mut self, new_scope_id: u32)
std
only.Changes the scope ID associated with this socket address.
See SocketAddrV6::scope_id
’s documentation for more details.
§Examples
use std::net::{SocketAddrV6, Ipv6Addr};
let mut socket = SocketAddrV6::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1), 8080, 0, 78);
socket.set_scope_id(42);
assert_eq!(socket.scope_id(), 42);
Trait Implementations§
§impl Archive for SocketAddrV6
impl Archive for SocketAddrV6
§type Archived = ArchivedSocketAddrV6
type Archived = ArchivedSocketAddrV6
§type Resolver = ()
type Resolver = ()
§fn resolve(
&self,
_: <SocketAddrV6 as Archive>::Resolver,
out: Place<<SocketAddrV6 as Archive>::Archived>,
)
fn resolve( &self, _: <SocketAddrV6 as Archive>::Resolver, out: Place<<SocketAddrV6 as Archive>::Archived>, )
§const COPY_OPTIMIZATION: CopyOptimization<Self> = _
const COPY_OPTIMIZATION: CopyOptimization<Self> = _
serialize
. Read more1.0.0 · Source§impl Clone for SocketAddrV6
impl Clone for SocketAddrV6
Source§fn clone(&self) -> SocketAddrV6
fn clone(&self) -> SocketAddrV6
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more1.0.0 · Source§impl Debug for SocketAddrV6
impl Debug for SocketAddrV6
Source§impl<'de> Deserialize<'de> for SocketAddrV6
impl<'de> Deserialize<'de> for SocketAddrV6
Source§fn deserialize<D>(
deserializer: D,
) -> Result<SocketAddrV6, <D as Deserializer<'de>>::Error> ⓘwhere
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D,
) -> Result<SocketAddrV6, <D as Deserializer<'de>>::Error> ⓘwhere
D: Deserializer<'de>,
§impl<D> Deserialize<SocketAddrV6, D> for ArchivedSocketAddrV6
impl<D> Deserialize<SocketAddrV6, D> for ArchivedSocketAddrV6
§fn deserialize(
&self,
deserializer: &mut D,
) -> Result<SocketAddrV6, <D as Fallible>::Error> ⓘ
fn deserialize( &self, deserializer: &mut D, ) -> Result<SocketAddrV6, <D as Fallible>::Error> ⓘ
1.0.0 · Source§impl Display for SocketAddrV6
impl Display for SocketAddrV6
1.16.0 · Source§impl From<SocketAddrV6> for SocketAddr
impl From<SocketAddrV6> for SocketAddr
Source§fn from(sock6: SocketAddrV6) -> SocketAddr
fn from(sock6: SocketAddrV6) -> SocketAddr
Converts a SocketAddrV6
into a SocketAddr::V6
.
§impl From<SocketAddrV6> for SocketAddrAny
impl From<SocketAddrV6> for SocketAddrAny
§fn from(from: SocketAddrV6) -> SocketAddrAny
fn from(from: SocketAddrV6) -> SocketAddrAny
1.5.0 · Source§impl FromStr for SocketAddrV6
impl FromStr for SocketAddrV6
Source§type Err = AddrParseError
type Err = AddrParseError
Source§fn from_str(s: &str) -> Result<SocketAddrV6, AddrParseError> ⓘ
fn from_str(s: &str) -> Result<SocketAddrV6, AddrParseError> ⓘ
s
to return a value of this type. Read more1.0.0 · Source§impl Hash for SocketAddrV6
impl Hash for SocketAddrV6
1.0.0 · Source§impl Ord for SocketAddrV6
impl Ord for SocketAddrV6
Source§fn cmp(&self, other: &SocketAddrV6) -> Ordering
fn cmp(&self, other: &SocketAddrV6) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
§impl PartialEq<ArchivedSocketAddrV6> for SocketAddrV6
impl PartialEq<ArchivedSocketAddrV6> for SocketAddrV6
§impl PartialEq<SocketAddrV6> for ArchivedSocketAddrV6
impl PartialEq<SocketAddrV6> for ArchivedSocketAddrV6
1.0.0 · Source§impl PartialEq for SocketAddrV6
impl PartialEq for SocketAddrV6
§impl PartialOrd<ArchivedSocketAddrV6> for SocketAddrV6
impl PartialOrd<ArchivedSocketAddrV6> for SocketAddrV6
§impl PartialOrd<SocketAddrV6> for ArchivedSocketAddrV6
impl PartialOrd<SocketAddrV6> for ArchivedSocketAddrV6
1.0.0 · Source§impl PartialOrd for SocketAddrV6
impl PartialOrd for SocketAddrV6
§impl<S> Serialize<S> for SocketAddrV6
impl<S> Serialize<S> for SocketAddrV6
Source§impl Serialize for SocketAddrV6
impl Serialize for SocketAddrV6
Source§fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> ⓘwhere
S: Serializer,
fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error> ⓘwhere
S: Serializer,
1.0.0 · Source§impl ToSocketAddrs for SocketAddrV6
impl ToSocketAddrs for SocketAddrV6
Source§type Iter = IntoIter<SocketAddr>
type Iter = IntoIter<SocketAddr>
Source§fn to_socket_addrs(&self) -> Result<IntoIter<SocketAddr>, Error> ⓘ
fn to_socket_addrs(&self) -> Result<IntoIter<SocketAddr>, Error> ⓘ
SocketAddr
s. Read moreimpl Copy for SocketAddrV6
impl Eq for SocketAddrV6
impl StructuralPartialEq for SocketAddrV6
impl ToSocketAddrs for SocketAddrV6
Auto Trait Implementations§
impl Freeze for SocketAddrV6
impl RefUnwindSafe for SocketAddrV6
impl Send for SocketAddrV6
impl Sync for SocketAddrV6
impl Unpin for SocketAddrV6
impl UnwindSafe for SocketAddrV6
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
§impl<T> ArchiveUnsized for Twhere
T: Archive,
impl<T> ArchiveUnsized for Twhere
T: Archive,
§type Archived = <T as Archive>::Archived
type Archived = <T as Archive>::Archived
Archive
, it may be
unsized. Read more§fn archived_metadata(
&self,
) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
fn archived_metadata( &self, ) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> ByteSized for T
impl<T> ByteSized for T
Source§const BYTE_ALIGN: usize = _
const BYTE_ALIGN: usize = _
Source§fn byte_align(&self) -> usize ⓘ
fn byte_align(&self) -> usize ⓘ
Source§fn ptr_size_ratio(&self) -> [usize; 2]
fn ptr_size_ratio(&self) -> [usize; 2]
Source§impl<T, R> Chain<R> for Twhere
T: ?Sized,
impl<T, R> Chain<R> for Twhere
T: ?Sized,
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.Source§impl<T> ExtAny for T
impl<T> ExtAny for T
Source§fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
Source§impl<T> ExtMem for Twhere
T: ?Sized,
impl<T> ExtMem for Twhere
T: ?Sized,
Source§const NEEDS_DROP: bool = _
const NEEDS_DROP: bool = _
Source§fn mem_align_of_val(&self) -> usize ⓘ
fn mem_align_of_val(&self) -> usize ⓘ
Source§fn mem_size_of_val(&self) -> usize ⓘ
fn mem_size_of_val(&self) -> usize ⓘ
Source§fn mem_needs_drop(&self) -> bool
fn mem_needs_drop(&self) -> bool
true
if dropping values of this type matters. Read moreSource§fn mem_forget(self)where
Self: Sized,
fn mem_forget(self)where
Self: Sized,
self
without running its destructor. Read moreSource§fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
Source§unsafe fn mem_zeroed<T>() -> T
unsafe fn mem_zeroed<T>() -> T
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§fn mem_as_bytes(&self) -> &[u8] ⓘ
fn mem_as_bytes(&self) -> &[u8] ⓘ
unsafe_slice
only.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Hook for T
impl<T> Hook for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError> ⓘ
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError> ⓘ
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out
indicating that a T
is niched.