Struct SockAddr
struct SockAddr { ... }
The address of a socket.
SockAddrs may be constructed directly to and from the standard library
SocketAddr, SocketAddrV4, and SocketAddrV6 types.
Implementations
impl SockAddr
unsafe const fn new(storage: SockAddrStorage, len: socklen_t) -> SockAddrCreate a
SockAddrfrom the underlying storage and its length.Safety
Caller must ensure that the address family and length match the type of storage address. For example if
storage.ss_familyis set toAF_INETthestoragemust be initialised assockaddr_in, setting the content and length appropriately.Examples
#unsafe fn try_init<F, T>(init: F) -> Result<(T, SockAddr)> where F: FnOnce(*mut SockAddrStorage, *mut socklen_t) -> Result<T>Initialise a
SockAddrby calling the functioninit.The type of the address storage and length passed to the function
initis OS/architecture specific.The address is zeroed before
initis called and is thus valid to dereference and read from. The length initialised to the maximum length of the storage.Safety
Caller must ensure that the address family and length match the type of storage address. For example if
storage.ss_familyis set toAF_INETthestoragemust be initialised assockaddr_in, setting the content and length appropriately.Examples
#fn unix<P>(path: P) -> Result<SockAddr> where P: AsRef<Path>Constructs a
SockAddrwith the familyAF_UNIXand the provided path.Returns an error if the path is longer than
SUN_LEN.unsafe fn set_length(self: &mut Self, length: socklen_t)Set the length of the address.
Safety
Caller must ensure that the address up to
lengthbytes are properly initialised.const fn family(self: &Self) -> sa_family_tReturns this address's family.
const fn domain(self: &Self) -> DomainReturns this address's
Domain.const fn len(self: &Self) -> socklen_tReturns the size of this address in bytes.
const fn as_ptr(self: &Self) -> *const SockAddrStorageReturns a raw pointer to the address.
const fn as_storage(self: Self) -> SockAddrStorageRetuns the address as the storage.
const fn is_ipv4(self: &Self) -> boolReturns true if this address is in the
AF_INET(IPv4) family, false otherwise.const fn is_ipv6(self: &Self) -> boolReturns true if this address is in the
AF_INET6(IPv6) family, false otherwise.fn is_unix(self: &Self) -> boolReturns true if this address is of a unix socket (for local interprocess communication), i.e. it is from the
AF_UNIXfamily, false otherwise.fn as_socket(self: &Self) -> Option<SocketAddr>Returns this address as a
SocketAddrif it is in theAF_INET(IPv4) orAF_INET6(IPv6) family, otherwise returnsNone.fn as_socket_ipv4(self: &Self) -> Option<SocketAddrV4>Returns this address as a
SocketAddrV4if it is in theAF_INETfamily.fn as_socket_ipv6(self: &Self) -> Option<SocketAddrV6>Returns this address as a
SocketAddrV6if it is in theAF_INET6family.
impl SockAddr
fn is_unnamed(self: &Self) -> boolReturns true if this address is an unnamed address from the
AF_UNIXfamily (for local interprocess communication), false otherwise.fn as_unix(self: &Self) -> Option<SocketAddr>Returns this address as Unix
SocketAddrif it is anAF_UNIXpathname address, otherwise returnsNone.fn as_pathname(self: &Self) -> Option<&Path>Returns this address as a
Pathreference if it is anAF_UNIXpathname address, otherwise returnsNone.fn as_abstract_namespace(self: &Self) -> Option<&[u8]>Returns this address as a slice of bytes representing an abstract address if it is an
AF_UNIXabstract address, otherwise returnsNone.Abstract addresses are a Linux extension, so this method returns
Noneon all non-Linux platforms.
impl Clone for SockAddr
fn clone(self: &Self) -> SockAddr
impl Debug for SockAddr
fn fmt(self: &Self, fmt: &mut Formatter<'_>) -> Result
impl Eq for SockAddr
impl Freeze for SockAddr
impl From for SockAddr
fn from(addr: SocketAddrV6) -> SockAddr
impl From for SockAddr
fn from(addr: SocketAddrV4) -> SockAddr
impl From for SockAddr
fn from(addr: SocketAddr) -> SockAddr
impl Hash for SockAddr
fn hash<H: std::hash::Hasher>(self: &Self, state: &mut H)
impl PartialEq for SockAddr
fn eq(self: &Self, other: &Self) -> bool
impl RefUnwindSafe for SockAddr
impl Send for SockAddr
impl Sync for SockAddr
impl Unpin for SockAddr
impl UnsafeUnpin for SockAddr
impl UnwindSafe for SockAddr
impl<T> Any for SockAddr
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for SockAddr
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for SockAddr
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> CloneToUninit for SockAddr
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8)
impl<T> From for SockAddr
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for SockAddr
fn to_owned(self: &Self) -> Tfn clone_into(self: &Self, target: &mut T)
impl<T, U> Into for SockAddr
fn into(self: Self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom for SockAddr
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for SockAddr
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>