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 50 51 52 53 54 55 56 57 58 59 60 61 62 63
pub mod vecmap; pub use crate::vecmap::VecMap; #[cfg(test)] mod tests { use super::*; #[test] fn insert_keeps_order() { let mut map: VecMap<i32, i32> = VecMap::new(); map.insert(1, 10); map.insert(-2, 20); assert_eq!(map.get_at(0), &20); assert_eq!(map.get_at(1), &10); } #[test] fn insert_smoke() { let mut map: VecMap<i32, i32> = VecMap::new(); map.insert(1, 11); map.insert(5, 15); map.insert(3, 13); assert_eq!(map.get(&1), Some(&11)); assert_eq!(map.get(&3), Some(&13)); assert_eq!(map.get(&5), Some(&15)); assert_eq!(map.get(&7), None); } #[test] fn entry_smoke() { let mut map: VecMap<i32, i32> = VecMap::new(); *map.entry(5).or_insert(0) += 1; map.entry(3).insert(2); assert_eq!(map.get(&3), Some(&2)); assert_eq!(map.get(&5), Some(&1)); } #[test] fn iterators() { let mut map: VecMap<i32, i32> = VecMap::new(); map.insert(1, 11); map.insert(0, 10); map.insert(2, 20); assert_eq!( map.iter().copied().collect::<Vec<(i32, i32)>>(), vec![(0, 10), (1, 11), (2, 20)] ); for v in map.values_mut() { *v += 1; } for (_k, v) in map.iter_mut() { *v += 1; } assert_eq!(map.keys().copied().collect::<Vec<i32>>(), vec![0, 1, 2]); assert_eq!( map.values().copied().collect::<Vec<i32>>(), vec![12, 13, 22] ); } }