netaddr2 0.10.0

A Rust network address parsing and arithmetic library
Documentation
use crate::netv6addr::Netv6Addr;
use core::cmp::Ordering;

impl Ord for Netv6Addr {
	fn cmp(&self, other: &Self) -> Ordering {
		match self.addr().cmp(&other.addr()) {
			Ordering::Equal => self.mask().cmp(&other.mask()),
			ordering => ordering,
		}
	}
}

#[cfg(test)]
mod tests {
	use super::Netv6Addr;
	use core::cmp::Ordering;

	#[test]
	fn different_networks() {
		let a: Netv6Addr = "2001:db8:0:0::0/64".parse().unwrap();
		let b: Netv6Addr = "2001:db8:0:1::0/64".parse().unwrap();

		assert_eq!(a.cmp(&b), Ordering::Less)
	}

	#[test]
	fn different_netmasks() {
		let a: Netv6Addr = "2001:db8:0:0::0/63".parse().unwrap();
		let b: Netv6Addr = "2001:db8:0:0::0/64".parse().unwrap();

		assert_eq!(a.cmp(&b), Ordering::Less)
	}

	#[test]
	fn different() {
		let a: Netv6Addr = "ff02::1/16".parse().unwrap();
		let b: Netv6Addr = "2001:db8:0:1::0/64".parse().unwrap();

		assert_eq!(a.cmp(&b), Ordering::Greater)
	}

	#[test]
	fn equal() {
		let a: Netv6Addr = "2001:db8:dead:beef::0/64".parse().unwrap();
		let b: Netv6Addr = "2001:db8:dead:beef::0/64".parse().unwrap();

		assert_eq!(a.cmp(&b), Ordering::Equal)
	}
}