smart_format/iter/
concat.rs1use 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}