Why are SocketAddrV4/SocketAddrV6 based on low level sockaddr_in[6]?

In the above benchmarks. The types are implemented in this way:

pub struct Ipv4Addr {
    octets: [u8; 4],
}

pub struct Ipv6Addr {
    octets: [u8; 16],
}

pub struct SocketAddrV4 {
    ip: Ipv4Addr,
    port: u16,
}

pub struct SocketAddrV6 {
    ip: Ipv6Addr,
    port: u16,
    flowinfo: u32,
    scope_id: u32,
}
4 Likes