Enum nix::sys::socket::SockAddr

#[non_exhaustive]
pub enum SockAddr {    
    Inet(InetAddr),
    Unix(UnixAddr),
    Netlink(NetlinkAddr),
    Alg(AlgAddr),
    Link(LinkAddr),
    Vsock(VsockAddr),
}
Documentation

Represents a socket address

Variants

Implementations

impl SockAddr
pub fn new_inet(addr: InetAddr) -> SockAddr
pub fn new_unix<P: ?Sized + NixPath>(path: &P) -> Result<SockAddr>
pub fn new_alg(alg_type: &str, alg_name: &str) -> SockAddr
pub fn new_vsock(cid: u32, port: u32) -> SockAddr
pub fn family(&Self) -> AddressFamily
pub fn to_str(&Self) -> String
pub fn as_ffi_pair(&Self) -> (&libc::sockaddr, libc::socklen_t)

Conversion from nix’s SockAddr type to the underlying libc sockaddr type.

This is useful for interfacing with other libc functions that don’t yet have nix wrappers. Returns a reference to the underlying data type (as a sockaddr reference) along with the size of the actual data type. sockaddr is commonly used as a proxy for a superclass as C doesn’t support inheritance, so many functions that take a sockaddr * need to take the size of the underlying type as well and then internally cast it back.

Trait Implementations

impl Clone for SockAddr
fn clone(&Self) -> SockAddr
impl Copy for SockAddr
impl Debug for SockAddr
fn fmt(&Self, f: &mut $crate::fmt::Formatter<'_>) -> $crate::fmt::Result
impl Display for SockAddr
fn fmt(&Self, f: &mut fmt::Formatter<'_>) -> fmt::Result
impl Eq for SockAddr
impl Hash for SockAddr
fn hash<__H: $crate::hash::Hasher>(&Self, state: &mut __H) -> ()
impl PartialEq<SockAddr> for SockAddr
fn eq(&Self, other: &SockAddr) -> bool
fn ne(&Self, other: &SockAddr) -> bool

Auto Trait Implementations

impl Send for SockAddr
impl Sync for SockAddr
impl Unpin for SockAddr
impl UnwindSafe for SockAddr

Blanket Implementations

impl<T> Any for T
where
    T: 'static + ?Sized,
fn type_id(&Self) -> TypeId
impl<T> Borrow<T> for T
where
    T: ?Sized,
fn borrow(&Self) -> &T
impl<T> BorrowMut<T> for T
where
    T: ?Sized,
fn borrow_mut(&mut Self) -> &mut T
impl<T> From<T> for T
fn from(t: T) -> T

Returns the argument unchanged.

impl<T, U> Into<U> for T
where
    U: From<T>,
fn into(Self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

impl<T> ToOwned for T
where
    T: Clone,
type Owned = T
fn to_owned(&Self) -> T
fn clone_into(&Self, target: &mut T)
impl<T> ToString for T
where
    T: Display + ?Sized,
fn to_string(&Self) -> String
impl<T, U> TryFrom<U> for T
where
    U: Into<T>,
type Error = Infallible
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto<U> for T
where
    U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
fn try_into(Self) -> Result<U, <U as TryFrom<T>>::Error>