Skip to content

Commit c4781c6

Browse files
committed
Day 8
1 parent fe4d7d4 commit c4781c6

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

src/bin/08.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ fn solve(
2222
grid.iter_item_and_position()
2323
.filter(|(_, &c)| c != '.')
2424
.map(|(point, c)| (c, point)),
25-
);
25+
)
26+
.unwrap();
2627

2728
let mut pos_set: HeaplessHashSet<Point, 2048> = HeaplessHashSet::new();
2829
for (_, vec) in antennas.iter() {

src/lib.rs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
1016
pub 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>>
1319
where
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

Comments
 (0)