From 30a1455c8da95ca3f4f8fb33edfa556678e3ac58 Mon Sep 17 00:00:00 2001 From: Lzu Tao Date: Wed, 5 Aug 2020 02:49:26 +0000 Subject: [PATCH] Use u32::from_ne_bytes to fix a FIXME Co-authored-by: Weiyi Wang Co-authored-by: Adam Reichold Co-authored-by: Josh Stone Co-authored-by: Scott McMurray Co-authored-by: tmiasko --- library/std/src/net/ip.rs | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/library/std/src/net/ip.rs b/library/std/src/net/ip.rs index a64b43ca3ad..a0c0981ebf9 100644 --- a/library/std/src/net/ip.rs +++ b/library/std/src/net/ip.rs @@ -319,15 +319,9 @@ impl Ipv4Addr { #[stable(feature = "rust1", since = "1.0.0")] #[rustc_const_stable(feature = "const_ipv4", since = "1.32.0")] pub const fn new(a: u8, b: u8, c: u8, d: u8) -> Ipv4Addr { - // FIXME: should just be u32::from_be_bytes([a, b, c, d]), - // once that method is no longer rustc_const_unstable - Ipv4Addr { - inner: c::in_addr { - s_addr: u32::to_be( - ((a as u32) << 24) | ((b as u32) << 16) | ((c as u32) << 8) | (d as u32), - ), - }, - } + // `s_addr` is stored as BE on all machine and the array is in BE order. + // So the native endian conversion method is used so that it's never swapped. + Ipv4Addr { inner: c::in_addr { s_addr: u32::from_ne_bytes([a, b, c, d]) } } } /// An IPv4 address with the address pointing to localhost: 127.0.0.1.