@@ -7,25 +7,33 @@ use heapless::Vec as HeaplessVec;
77
88// Use this file to add helper functions and additional modules.
99
10+ #[ derive( Debug ) ]
11+ pub enum GroupMapError < V , K > {
12+ VecInsertError ( V ) ,
13+ HashMapInsertError ( K ) ,
14+ }
15+
1016pub fn into_group_map_heapless < const M : usize , const N : usize , I , K , V > (
1117 iter : I ,
12- ) -> HeaplessHashMap < K , HeaplessVec < V , M > , N >
18+ ) -> Result < HeaplessHashMap < K , HeaplessVec < V , M > , N > , GroupMapError < V , K > >
1319where
1420 V : Clone + Debug ,
1521 I : Iterator < Item = ( K , V ) > ,
1622 K : Hash + Eq + Debug ,
1723{
1824 let mut lookup: HeaplessHashMap < K , HeaplessVec < V , M > , N > = HeaplessHashMap :: new ( ) ;
1925
20- iter . for_each ( | ( key, val) | {
26+ for ( key, val) in iter {
2127 if let Some ( vec) = lookup. get_mut ( & key) {
22- vec. push ( val) . unwrap ( ) ;
28+ vec. push ( val) . map_err ( GroupMapError :: VecInsertError ) ? ;
2329 } else {
2430 let mut vec = HeaplessVec :: new ( ) ;
25- vec. push ( val) . unwrap ( ) ;
26- lookup. insert ( key, vec) . unwrap ( ) ;
31+ vec. push ( val) . map_err ( GroupMapError :: VecInsertError ) ?;
32+ lookup
33+ . insert ( key, vec)
34+ . map_err ( |( k, _) | GroupMapError :: HashMapInsertError ( k) ) ?;
2735 }
28- } ) ;
36+ }
2937
30- lookup
38+ Ok ( lookup)
3139}
0 commit comments