| 
1 |  | -use crate::cmp::Ordering;  | 
2 | 1 | use crate::fmt::{self, Write};  | 
3 |  | -use crate::hash;  | 
4 | 2 | use crate::net::{IpAddr, Ipv4Addr, Ipv6Addr};  | 
5 | 3 | 
 
  | 
6 | 4 | use super::display_buffer::DisplayBuffer;  | 
@@ -63,7 +61,7 @@ pub enum SocketAddr {  | 
63 | 61 | /// assert_eq!(socket.ip(), &Ipv4Addr::new(127, 0, 0, 1));  | 
64 | 62 | /// assert_eq!(socket.port(), 8080);  | 
65 | 63 | /// ```  | 
66 |  | -#[derive(Copy, Clone, Eq, PartialEq)]  | 
 | 64 | +#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]  | 
67 | 65 | #[stable(feature = "rust1", since = "1.0.0")]  | 
68 | 66 | pub struct SocketAddrV4 {  | 
69 | 67 |     ip: Ipv4Addr,  | 
@@ -96,7 +94,7 @@ pub struct SocketAddrV4 {  | 
96 | 94 | /// assert_eq!(socket.ip(), &Ipv6Addr::new(0x2001, 0xdb8, 0, 0, 0, 0, 0, 1));  | 
97 | 95 | /// assert_eq!(socket.port(), 8080);  | 
98 | 96 | /// ```  | 
99 |  | -#[derive(Copy, Clone, Eq, PartialEq)]  | 
 | 97 | +#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]  | 
100 | 98 | #[stable(feature = "rust1", since = "1.0.0")]  | 
101 | 99 | pub struct SocketAddrV6 {  | 
102 | 100 |     ip: Ipv6Addr,  | 
@@ -644,48 +642,3 @@ impl fmt::Debug for SocketAddrV6 {  | 
644 | 642 |         fmt::Display::fmt(self, fmt)  | 
645 | 643 |     }  | 
646 | 644 | }  | 
647 |  | - | 
648 |  | -#[stable(feature = "socketaddr_ordering", since = "1.45.0")]  | 
649 |  | -impl PartialOrd for SocketAddrV4 {  | 
650 |  | -    #[inline]  | 
651 |  | -    fn partial_cmp(&self, other: &SocketAddrV4) -> Option<Ordering> {  | 
652 |  | -        Some(self.cmp(other))  | 
653 |  | -    }  | 
654 |  | -}  | 
655 |  | - | 
656 |  | -#[stable(feature = "socketaddr_ordering", since = "1.45.0")]  | 
657 |  | -impl PartialOrd for SocketAddrV6 {  | 
658 |  | -    #[inline]  | 
659 |  | -    fn partial_cmp(&self, other: &SocketAddrV6) -> Option<Ordering> {  | 
660 |  | -        Some(self.cmp(other))  | 
661 |  | -    }  | 
662 |  | -}  | 
663 |  | - | 
664 |  | -#[stable(feature = "socketaddr_ordering", since = "1.45.0")]  | 
665 |  | -impl Ord for SocketAddrV4 {  | 
666 |  | -    #[inline]  | 
667 |  | -    fn cmp(&self, other: &SocketAddrV4) -> Ordering {  | 
668 |  | -        self.ip().cmp(other.ip()).then(self.port().cmp(&other.port()))  | 
669 |  | -    }  | 
670 |  | -}  | 
671 |  | - | 
672 |  | -#[stable(feature = "socketaddr_ordering", since = "1.45.0")]  | 
673 |  | -impl Ord for SocketAddrV6 {  | 
674 |  | -    #[inline]  | 
675 |  | -    fn cmp(&self, other: &SocketAddrV6) -> Ordering {  | 
676 |  | -        self.ip().cmp(other.ip()).then(self.port().cmp(&other.port()))  | 
677 |  | -    }  | 
678 |  | -}  | 
679 |  | - | 
680 |  | -#[stable(feature = "rust1", since = "1.0.0")]  | 
681 |  | -impl hash::Hash for SocketAddrV4 {  | 
682 |  | -    fn hash<H: hash::Hasher>(&self, s: &mut H) {  | 
683 |  | -        (self.port, self.ip).hash(s)  | 
684 |  | -    }  | 
685 |  | -}  | 
686 |  | -#[stable(feature = "rust1", since = "1.0.0")]  | 
687 |  | -impl hash::Hash for SocketAddrV6 {  | 
688 |  | -    fn hash<H: hash::Hasher>(&self, s: &mut H) {  | 
689 |  | -        (self.port, &self.ip, self.flowinfo, self.scope_id).hash(s)  | 
690 |  | -    }  | 
691 |  | -}  | 
0 commit comments