1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use super::Prefix;
use crate::concrete::{self, Ipv4, Ipv6};

/// Iterator returned by
/// [`Prefix::subprefixes()`][crate::traits::Prefix::subprefixes].
#[derive(Debug, Clone)]
pub enum Subprefixes {
    /// IPv4 variant.
    Ipv4(concrete::Subprefixes<Ipv4>),
    /// IPv6 variant.
    Ipv6(concrete::Subprefixes<Ipv6>),
}

impl Iterator for Subprefixes {
    type Item = Prefix;

    fn next(&mut self) -> Option<Self::Item> {
        match self {
            Self::Ipv4(iter) => iter.next().map(Self::Item::Ipv4),
            Self::Ipv6(iter) => iter.next().map(Self::Item::Ipv6),
        }
    }
}