From 47443753f1197877f51f4a66d3475f8c9e4d5bc2 Mon Sep 17 00:00:00 2001 From: Eric Reed Date: Mon, 17 Jun 2013 12:33:46 -0700 Subject: [PATCH] added Eq and TotalEq instances for IpAddr --- src/libstd/rt/io/net/ip.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) 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 + } +}