Skip to content

Commit cc4ce1c

Browse files
committed
Use NoHash
1 parent d1fcebd commit cc4ce1c

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

src/day24.rs

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,27 @@
1-
use std::hint::unreachable_unchecked;
1+
use std::{
2+
hash::{BuildHasherDefault, Hasher},
3+
hint::unreachable_unchecked,
4+
};
25

36
use aoc_runner_derive::aoc;
47

8+
#[derive(Default)]
9+
struct NoHash(u64);
10+
11+
impl Hasher for NoHash {
12+
fn finish(&self) -> u64 {
13+
self.0
14+
}
15+
16+
fn write(&mut self, bytes: &[u8]) {
17+
self.0 += bytes[0] as u64;
18+
}
19+
20+
fn write_u16(&mut self, i: u16) {
21+
self.0 = i as u64;
22+
}
23+
}
24+
525
#[aoc(day24, part1)]
626
pub fn part1(s: &str) -> u64 {
727
let s = s.as_bytes();
@@ -102,7 +122,7 @@ impl Gate {
102122

103123
#[inline(always)]
104124
pub fn part1_inner(s: &[u8]) -> u64 {
105-
let mut gates_map = heapless::FnvIndexMap::<u16, u16, 512>::new();
125+
let mut gates_map = heapless::IndexMap::<u16, u16, BuildHasherDefault<NoHash>, 512>::default();
106126

107127
let mut gates = heapless::Vec::<Gate, 512>::from_slice(
108128
&[Gate {
@@ -304,7 +324,7 @@ pub fn part2_inner(s: &[u8]) -> &'static str {
304324

305325
let mut inputs = [(0u16, 0u16); 45];
306326

307-
let mut gates_map = heapless::FnvIndexMap::<u16, u16, 512>::new();
327+
let mut gates_map = heapless::IndexMap::<u16, u16, BuildHasherDefault<NoHash>, 512>::default();
308328

309329
let mut gates = heapless::Vec::<Gate, 512>::from_slice(
310330
&[Gate {

0 commit comments

Comments
 (0)