1pub trait VecString{
2 fn vec_string(&self) -> String;
3 fn vec_string_inner(&self) -> String;
4}
5
6impl<T> VecString for Vec<T> where T: std::fmt::Display{
8 fn vec_string(&self) -> String{
10 format!("[{}]", self.vec_string_inner())
11 }
12
13 fn vec_string_inner(&self) -> String{
15 let mut string = String::new();
16 for x in self{
17 string.push_str(&format!("{}, ", x));
18 }
19 string.pop();
20 string.pop();
21 string
22 }
23}
24
25#[cfg(test)]
26mod tests {
27 use crate::VecString;
28
29 #[test]
30 fn it_works() {
31 assert_eq!(2 + 2, 4);
32 }
33
34 #[test]
35 fn test() {
36 assert_eq!("[1, 2, 3]", vec![1, 2, 3].vec_string());
37 assert_eq!("1, 2, 3", vec![1, 2, 3].vec_string_inner());
38 }
39}