Feature gate: #![feature(const_socketaddr)]
This is a tracking issue for constifying methods of std::net::SocketAddr, SocketAddrV4 and SocketAddrV6.
Public API
// std::net
impl SocketAddr {
pub const fn new(ip: IpAddr, port: u16) -> Self;
pub const fn ip(&self) -> IpAddr;
pub const fn port(&self) -> u16;
pub const fn is_ipv4(&self) -> bool;
pub const fn is_ipv6(&self) -> bool;
}
impl SocketAddrV4 {
pub const fn new(ip: Ipv4Addr, port: u16) -> Self;
pub const fn ip(&self) -> IpAddr;
pub const fn port(&self) -> u16;
}
impl SocketAddrV6 {
pub const fn new(ip: Ipv6Addr, port: u16, flowinfo: u32, scope_id: u32) -> Self;
pub const fn ip(&self) -> IpAddr;
pub const fn port(&self) -> u16;
pub const fn flowinfo(&self) -> u32;
pub const fn scope_id(&self) -> u32;
}
Steps / History
Unresolved Questions
The methods new on all of the address could potentially also be made const, however there are two complications: getting the inner C representation of an IP address, and adding trailing zero bytes on windows. Resolved by #78802
Feature gate:
#![feature(const_socketaddr)]This is a tracking issue for constifying methods of
std::net::SocketAddr,SocketAddrV4andSocketAddrV6.Public API
Steps / History
std::net::SocketAddr,SocketAddrV4andSocketAddrV6#82487Unresolved Questions
The methodsResolved by #78802newon all of the address could potentially also be made const, however there are two complications: getting the inner C representation of an IP address, and adding trailing zero bytes on windows.