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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
use super::{Replicates, TreeBag}; use serde::ser::{Serialize, Serializer}; impl<H, T> Serialize for Replicates<'_, H, T> where H: Ord, T: Serialize, { fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer, { serializer.collect_seq(self.iter()) } } impl<H, T> Serialize for TreeBag<H, T> where H: Ord + Serialize, T: Serialize, { fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where S: Serializer, { serializer.collect_map(self.0.iter()) } } #[cfg(test)] mod tests { use super::super::TreeBag; #[test] fn json() { let counter: TreeBag<i32, &str> = vec![ (77, "hello"), (77, "world"), (1, "ignored"), (3, "foo"), (3, "bar"), ] .into_iter() .collect(); let result = serde_json::to_string(&counter.duplicates()).unwrap(); let expected = r#"[["foo","bar"],["hello","world"]]"#; assert_eq!(result, expected); } }