Rollup merge of #67321 - lzutao:htons, r=dtolnay

make htons const fn

This may partially help #67315.
This commit is contained in:
Mazdak Farrokhzad 2019-12-19 10:29:56 +01:00 committed by GitHub
commit 910bb6530c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 22 deletions

View File

@ -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.

View File

@ -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>