micromap_rawl/
clone.rs

1use crate::Map;
2
3impl<K: Clone + PartialEq, V: Clone, const N: usize> Clone for Map<K, V, N> {
4    fn clone(&self) -> Self {
5        let mut m: Self = Self::new();
6        for i in 0..self.len {
7            m.item_write(i, self.item_ref(i).clone());
8        }
9        m.len = self.len;
10        m
11    }
12}
13
14#[cfg(test)]
15mod test {
16    use super::*;
17
18    #[test]
19    fn map_can_be_cloned() {
20        let mut m: Map<u8, u8, 16> = Map::new();
21        m.insert(0, 42);
22        assert_eq!(42, *m.clone().get(&0).unwrap());
23    }
24
25    #[test]
26    fn empty_map_can_be_cloned() {
27        let m: Map<u8, u8, 0> = Map::new();
28        assert!(m.clone().is_empty());
29    }
30}