@@ -12,7 +12,7 @@ use crate::hash;
12
12
use crate :: io:: Write as IoWrite ;
13
13
use crate :: mem:: transmute;
14
14
use crate :: sys:: net:: netc as c;
15
- use crate :: sys_common:: { AsInner , FromInner } ;
15
+ use crate :: sys_common:: { AsInner , FromInner , IntoInner } ;
16
16
17
17
/// An IP address, either IPv4 or IPv6.
18
18
///
@@ -909,8 +909,8 @@ impl Eq for Ipv4Addr {}
909
909
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
910
910
impl hash:: Hash for Ipv4Addr {
911
911
fn hash < H : hash:: Hasher > ( & self , s : & mut H ) {
912
- // `inner` is #[repr(packed)], so we need to copy `s_addr`.
913
- { self . inner . s_addr } . hash ( s)
912
+ // hashing in big endian
913
+ self . inner . s_addr . hash ( s)
914
914
}
915
915
}
916
916
@@ -944,13 +944,14 @@ impl PartialOrd<IpAddr> for Ipv4Addr {
944
944
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
945
945
impl Ord for Ipv4Addr {
946
946
fn cmp ( & self , other : & Ipv4Addr ) -> Ordering {
947
+ // Compare as native endian
947
948
u32:: from_be ( self . inner . s_addr ) . cmp ( & u32:: from_be ( other. inner . s_addr ) )
948
949
}
949
950
}
950
951
951
- impl AsInner < c:: in_addr > for Ipv4Addr {
952
- fn as_inner ( & self ) -> & c:: in_addr {
953
- & self . inner
952
+ impl IntoInner < c:: in_addr > for Ipv4Addr {
953
+ fn into_inner ( self ) -> c:: in_addr {
954
+ self . inner
954
955
}
955
956
}
956
957
@@ -2019,6 +2020,7 @@ mod tests {
2019
2020
2020
2021
#[ test]
2021
2022
fn ipv4_addr_to_string ( ) {
2023
+ assert_eq ! ( Ipv4Addr :: new( 127 , 0 , 0 , 1 ) . to_string( ) , "127.0.0.1" ) ;
2022
2024
// Short address
2023
2025
assert_eq ! ( Ipv4Addr :: new( 1 , 1 , 1 , 1 ) . to_string( ) , "1.1.1.1" ) ;
2024
2026
// Long address
0 commit comments