ibc_primitives/utils/
pretty.rs1use core::fmt::{Display, Error as FmtError, Formatter};
4
5pub struct PrettySlice<'a, T>(pub &'a [T]);
7
8impl<T: Display> Display for PrettySlice<'_, T> {
9 fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), FmtError> {
10 write!(f, "[ ")?;
11 let mut vec_iterator = self.0.iter().peekable();
12 while let Some(element) = vec_iterator.next() {
13 write!(f, "{element}")?;
14 if vec_iterator.peek().is_some() {
16 write!(f, ", ")?;
17 }
18 }
19 write!(f, " ]")
20 }
21}
22
23#[cfg(test)]
24mod tests {
25 use super::*;
26 use crate::prelude::*;
27
28 #[test]
29 fn test_pretty_vec_display() {
30 let expected_output = "[ one, two, three ]";
31
32 let string_vec = vec!["one", "two", "three"];
33 let pretty_vec = PrettySlice(&string_vec);
34
35 assert_eq!(pretty_vec.to_string(), expected_output);
36 }
37
38 #[test]
39 fn test_pretty_vec_empty_vec() {
40 let expected_output = "[ ]";
41
42 let string_vec: Vec<String> = vec![];
43 let pretty_vec = PrettySlice(&string_vec);
44
45 assert_eq!(pretty_vec.to_string(), expected_output);
46 }
47
48 #[test]
49 fn test_pretty_vec_single_element() {
50 let expected_output = "[ one ]";
51
52 let string_vec = vec!["one"];
53 let pretty_vec = PrettySlice(&string_vec);
54
55 assert_eq!(pretty_vec.to_string(), expected_output);
56 }
57}