cidr/inet/
mod.rs

1mod combined;
2mod direct;
3mod from_str;
4mod serde;
5
6#[cfg(test)]
7mod tests;
8
9use std::net::{
10	Ipv4Addr,
11	Ipv6Addr,
12};
13
14/// [`Inet`] type representing an IPv4 host within a network
15///
16/// Derived ordering, i.e. first sort by address, then by network
17/// length.
18///
19/// [`Inet`]: crate::Inet
20#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
21pub struct Ipv4Inet {
22	pub(crate) address: Ipv4Addr,
23	pub(crate) network_length: u8,
24}
25
26/// [`Inet`] type representing an IPv6 host within a network
27///
28/// Derived ordering, i.e. first sort by address, then by network
29/// length.
30///
31/// [`Inet`]: crate::Inet
32#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
33pub struct Ipv6Inet {
34	pub(crate) address: Ipv6Addr,
35	pub(crate) network_length: u8,
36}
37
38/// [`Inet`] type representing either an IPv4 or an IPv6 host within a
39/// network
40///
41/// [`Inet`]: crate::Inet
42#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Debug)]
43pub enum IpInet {
44	/// IPv4 host within network
45	V4(Ipv4Inet),
46	/// IPv6 host within network
47	V6(Ipv6Inet),
48}