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}