@@ -17,7 +17,6 @@ use cmp::Ordering;
17
17
use fmt;
18
18
use hash;
19
19
use mem;
20
- use net:: { hton, ntoh} ;
21
20
use sys:: net:: netc as c;
22
21
use sys_common:: { AsInner , FromInner } ;
23
22
@@ -340,13 +339,16 @@ impl Ipv4Addr {
340
339
/// let addr = Ipv4Addr::new(127, 0, 0, 1);
341
340
/// ```
342
341
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
343
- pub fn new ( a : u8 , b : u8 , c : u8 , d : u8 ) -> Ipv4Addr {
342
+ #[ rustc_const_unstable( feature = "const_ip" ) ]
343
+ pub const fn new ( a : u8 , b : u8 , c : u8 , d : u8 ) -> Ipv4Addr {
344
344
Ipv4Addr {
345
345
inner : c:: in_addr {
346
- s_addr : hton ( ( ( a as u32 ) << 24 ) |
347
- ( ( b as u32 ) << 16 ) |
348
- ( ( c as u32 ) << 8 ) |
349
- ( d as u32 ) ) ,
346
+ s_addr : u32:: to_be (
347
+ ( ( a as u32 ) << 24 ) |
348
+ ( ( b as u32 ) << 16 ) |
349
+ ( ( c as u32 ) << 8 ) |
350
+ ( d as u32 )
351
+ ) ,
350
352
}
351
353
}
352
354
}
@@ -399,7 +401,7 @@ impl Ipv4Addr {
399
401
/// ```
400
402
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
401
403
pub fn octets ( & self ) -> [ u8 ; 4 ] {
402
- let bits = ntoh ( self . inner . s_addr ) ;
404
+ let bits = u32 :: from_be ( self . inner . s_addr ) ;
403
405
[ ( bits >> 24 ) as u8 , ( bits >> 16 ) as u8 , ( bits >> 8 ) as u8 , bits as u8 ]
404
406
}
405
407
@@ -763,7 +765,7 @@ impl PartialOrd<IpAddr> for Ipv4Addr {
763
765
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
764
766
impl Ord for Ipv4Addr {
765
767
fn cmp ( & self , other : & Ipv4Addr ) -> Ordering {
766
- ntoh ( self . inner . s_addr ) . cmp ( & ntoh ( other. inner . s_addr ) )
768
+ u32 :: from_be ( self . inner . s_addr ) . cmp ( & u32 :: from_be ( other. inner . s_addr ) )
767
769
}
768
770
}
769
771
@@ -856,18 +858,24 @@ impl Ipv6Addr {
856
858
/// let addr = Ipv6Addr::new(0, 0, 0, 0, 0, 0xffff, 0xc00a, 0x2ff);
857
859
/// ```
858
860
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
859
- pub fn new ( a : u16 , b : u16 , c : u16 , d : u16 , e : u16 , f : u16 , g : u16 ,
860
- h : u16 ) -> Ipv6Addr {
861
- let mut addr: c:: in6_addr = unsafe { mem:: zeroed ( ) } ;
862
- addr. s6_addr = [ ( a >> 8 ) as u8 , a as u8 ,
863
- ( b >> 8 ) as u8 , b as u8 ,
864
- ( c >> 8 ) as u8 , c as u8 ,
865
- ( d >> 8 ) as u8 , d as u8 ,
866
- ( e >> 8 ) as u8 , e as u8 ,
867
- ( f >> 8 ) as u8 , f as u8 ,
868
- ( g >> 8 ) as u8 , g as u8 ,
869
- ( h >> 8 ) as u8 , h as u8 ] ;
870
- Ipv6Addr { inner : addr }
861
+ #[ rustc_const_unstable( feature = "const_ip" ) ]
862
+ pub const fn new ( a : u16 , b : u16 , c : u16 , d : u16 , e : u16 , f : u16 ,
863
+ g : u16 , h : u16 ) -> Ipv6Addr {
864
+ Ipv6Addr {
865
+ inner : c:: in6_addr {
866
+ s6_addr : [
867
+ ( a >> 8 ) as u8 , a as u8 ,
868
+ ( b >> 8 ) as u8 , b as u8 ,
869
+ ( c >> 8 ) as u8 , c as u8 ,
870
+ ( d >> 8 ) as u8 , d as u8 ,
871
+ ( e >> 8 ) as u8 , e as u8 ,
872
+ ( f >> 8 ) as u8 , f as u8 ,
873
+ ( g >> 8 ) as u8 , g as u8 ,
874
+ ( h >> 8 ) as u8 , h as u8
875
+ ] ,
876
+ }
877
+ }
878
+
871
879
}
872
880
873
881
/// Creates a new IPv6 address representing localhost: `::1`.
0 commit comments