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
#![cfg_attr(not(feature = "use_std"), no_std)]

mod fst;
mod snd;
mod trd;

pub use fst::Fst;
pub use snd::Snd;
pub use trd::Trd;

#[cfg(feature = "use_std")]
#[cfg(test)]
mod tests {
    use crate::{Fst, Snd};

    #[test]
    fn fst() {
        let x = vec![(2, 3), (3, 4), (4, 5), (5, 6)];

        let expected = vec![2, 3, 4, 5];
        assert_eq!(x.iter().map(Fst::fst).cloned().collect::<Vec<_>>(), expected);
        assert_eq!(x.into_iter().map(Fst::into_fst).collect::<Vec<_>>(), expected);
    }

    #[test]
    fn snd() {
        let x = vec![(2, 3), (3, 4), (4, 5), (5, 6)];

        let expected = vec![3, 4, 5, 6];
        assert_eq!(x.iter().map(Snd::snd).cloned().collect::<Vec<_>>(), expected);
        assert_eq!(x.into_iter().map(Snd::into_snd).collect::<Vec<_>>(), expected);
    }
}