diff --git a/src/libstd/rt/io/net/ip.rs b/src/libstd/rt/io/net/ip.rs index df1dfe4d38ad..f885c7f27886 100644 --- a/src/libstd/rt/io/net/ip.rs +++ b/src/libstd/rt/io/net/ip.rs @@ -8,7 +8,28 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +use std::cmp::{Eq, TotalEq, eq}; + pub enum IpAddr { Ipv4(u8, u8, u8, u8, u16), Ipv6 } + +impl Eq for IpAddr { + fn eq(&self, other: &IpAddr) -> bool { + match (*self, *other) { + (Ipv4(a,b,c,d,e), Ipv4(f,g,h,i,j)) => a == f && b == g && c == h && d == i && e == j, + (Ipv6, Ipv6) => fail!(), + _ => false + } + } + fn ne(&self, other: &IpAddr) -> bool { + !eq(self, other) + } +} + +impl TotalEq for IpAddr { + fn equals(&self, other: &IpAddr) -> bool { + *self == *other + } +}