1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//! Flatten.

use super::*;

impl<P: Copy, R: Copy, const D: Dep> I<ValidH<HOption<P>, R>, D> {
    /// Flattens the payload.
    ///
    /// - Payload: Flattened.
    /// - Resolver: Preserved.
    ///
    /// | Interface | Ingress               | Egress       |
    /// | :-------: | --------------------- | ------------ |
    /// |  **Fwd**  | `HOption<HOption<P>>` | `HOption<P>` |
    /// |  **Bwd**  | `R`                   | `R`          |
    pub fn flatten(self) -> I<ValidH<P, R>, D> {
        self.filter_map(|p| p)
    }
}

impl<P: Copy, R: Copy, const D: Dep> I<VrH<HOption<P>, R>, D> {
    /// Flattens the payload.
    ///
    /// - Payload: Flattened.
    /// - Resolver: Preserved.
    ///
    /// | Interface | Ingress               | Egress       |
    /// | :-------: | --------------------- | ------------ |
    /// |  **Fwd**  | `HOption<HOption<P>>` | `HOption<P>` |
    /// |  **Bwd**  | `Ready<R>`            | `Ready<R>`   |
    pub fn flatten(self) -> I<VrH<P, R>, D> {
        self.filter_map(|p| p)
    }
}