vk_method/params/
pairs_iter.rs1use super::Params;
2use serde::Serialize;
3
4pub struct PairsIter<K, V, I>(pub I)
23where
24    I: ExactSizeIterator<Item = (K, V)>,
25    K: ToString,
26    V: Serialize;
27
28impl<K, V, I> TryFrom<PairsIter<K, V, I>> for Params
29where
30    I: ExactSizeIterator<Item = (K, V)>,
31    K: ToString,
32    V: Serialize
33{
34    type Error = serde_json::Error;
35
36    fn try_from(pairs_iter: PairsIter<K, V, I>) -> Result<Self, Self::Error>{
37        let mut vector = Vec::with_capacity(pairs_iter.0.len());
38
39        for (k, v) in pairs_iter.0 {
40            vector.push((k.to_string(), ijson::to_value(v)?));
41        }
42
43        Ok(Params(vector))
44    }
45}
46
47#[cfg(test)]
48mod tests {
49    use super::*;
50
51    #[test]
52    fn from_string_pairs_iter() {
53        let array = vec![("user_ids", "1,2,3,4,5")];
54
55        let params = Params::try_from(PairsIter(array.into_iter())).unwrap();
56
57        assert_eq!(params, Params(vec![
58            ("user_ids".to_string(), "1,2,3,4,5".into())
59        ]));
60    }
61}