Skip to main content

smart_format/iter/
concat.rs

1use core::fmt;
2
3pub struct Concat<T> {
4    iter: T,
5}
6
7impl<T> Concat<T> {
8    pub fn new(iter: T) -> Self {
9        Concat { iter }
10    }
11}
12
13impl<T> fmt::Display for Concat<T>
14where
15    T: Iterator + Clone,
16    T::Item: fmt::Display,
17{
18    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
19        for item in self.iter.clone() {
20            item.fmt(f)?;
21        }
22        Ok(())
23    }
24}
25
26#[cfg(test)]
27mod tests {
28    use super::super::tests::CONCAT_SAMPLE_NUM;
29    use super::super::tests::CONCAT_SAMPLE_STR;
30    use super::super::tests::SOURCE_NUM;
31    use super::super::tests::SOURCE_STR;
32    use super::*;
33
34    #[test]
35    fn it_concats_str() {
36        assert_eq!(
37            CONCAT_SAMPLE_STR,
38            Concat::new(SOURCE_STR.iter()).to_string()
39        );
40    }
41
42    #[test]
43    fn it_concats_num() {
44        assert_eq!(
45            CONCAT_SAMPLE_NUM,
46            Concat::new(SOURCE_NUM.iter()).to_string()
47        );
48    }
49}