Rollup merge of #67321 - lzutao:htons, r=dtolnay
make htons const fn This may partially help #67315.
This commit is contained in:
commit
910bb6530c
|
@ -4,7 +4,7 @@ use crate::hash;
|
|||
use crate::io;
|
||||
use crate::iter;
|
||||
use crate::mem;
|
||||
use crate::net::{hton, ntoh, IpAddr, Ipv4Addr, Ipv6Addr};
|
||||
use crate::net::{htons, ntohs, IpAddr, Ipv4Addr, Ipv6Addr};
|
||||
use crate::option;
|
||||
use crate::slice;
|
||||
use crate::sys::net::netc as c;
|
||||
|
@ -276,7 +276,7 @@ impl SocketAddrV4 {
|
|||
SocketAddrV4 {
|
||||
inner: c::sockaddr_in {
|
||||
sin_family: c::AF_INET as c::sa_family_t,
|
||||
sin_port: hton(port),
|
||||
sin_port: htons(port),
|
||||
sin_addr: *ip.as_inner(),
|
||||
..unsafe { mem::zeroed() }
|
||||
},
|
||||
|
@ -326,7 +326,7 @@ impl SocketAddrV4 {
|
|||
/// ```
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub fn port(&self) -> u16 {
|
||||
ntoh(self.inner.sin_port)
|
||||
ntohs(self.inner.sin_port)
|
||||
}
|
||||
|
||||
/// Changes the port number associated with this socket address.
|
||||
|
@ -342,7 +342,7 @@ impl SocketAddrV4 {
|
|||
/// ```
|
||||
#[stable(feature = "sockaddr_setters", since = "1.9.0")]
|
||||
pub fn set_port(&mut self, new_port: u16) {
|
||||
self.inner.sin_port = hton(new_port);
|
||||
self.inner.sin_port = htons(new_port);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -368,7 +368,7 @@ impl SocketAddrV6 {
|
|||
SocketAddrV6 {
|
||||
inner: c::sockaddr_in6 {
|
||||
sin6_family: c::AF_INET6 as c::sa_family_t,
|
||||
sin6_port: hton(port),
|
||||
sin6_port: htons(port),
|
||||
sin6_addr: *ip.as_inner(),
|
||||
sin6_flowinfo: flowinfo,
|
||||
sin6_scope_id: scope_id,
|
||||
|
@ -420,7 +420,7 @@ impl SocketAddrV6 {
|
|||
/// ```
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub fn port(&self) -> u16 {
|
||||
ntoh(self.inner.sin6_port)
|
||||
ntohs(self.inner.sin6_port)
|
||||
}
|
||||
|
||||
/// Changes the port number associated with this socket address.
|
||||
|
@ -436,7 +436,7 @@ impl SocketAddrV6 {
|
|||
/// ```
|
||||
#[stable(feature = "sockaddr_setters", since = "1.9.0")]
|
||||
pub fn set_port(&mut self, new_port: u16) {
|
||||
self.inner.sin6_port = hton(new_port);
|
||||
self.inner.sin6_port = htons(new_port);
|
||||
}
|
||||
|
||||
/// Returns the flow information associated with this address.
|
||||
|
|
|
@ -85,21 +85,10 @@ pub enum Shutdown {
|
|||
Both,
|
||||
}
|
||||
|
||||
#[doc(hidden)]
|
||||
trait NetInt {
|
||||
fn from_be(i: Self) -> Self;
|
||||
fn to_be(&self) -> Self;
|
||||
}
|
||||
macro_rules! doit {
|
||||
($($t:ident)*) => ($(impl NetInt for $t {
|
||||
fn from_be(i: Self) -> Self { <$t>::from_be(i) }
|
||||
fn to_be(&self) -> Self { <$t>::to_be(*self) }
|
||||
})*)
|
||||
}
|
||||
doit! { i8 i16 i32 i64 isize u8 u16 u32 u64 usize }
|
||||
|
||||
fn hton<I: NetInt>(i: I) -> I { i.to_be() }
|
||||
fn ntoh<I: NetInt>(i: I) -> I { I::from_be(i) }
|
||||
#[inline]
|
||||
const fn htons(i: u16) -> u16 { i.to_be() }
|
||||
#[inline]
|
||||
const fn ntohs(i: u16) -> u16 { u16::from_be(i) }
|
||||
|
||||
fn each_addr<A: ToSocketAddrs, F, T>(addr: A, mut f: F) -> io::Result<T>
|
||||
where F: FnMut(io::Result<&SocketAddr>) -> io::Result<T>
|
||||
|
|
Loading…
Reference in New Issue