Skip to content

Commit 1dda2a5

Browse files
authored
Extended BorrowDecode for HashMap to support custom hashers (#585)
1 parent 52464e0 commit 1dda2a5

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/features/impl_std.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -444,16 +444,18 @@ where
444444
Ok(map)
445445
}
446446
}
447-
impl<'de, K, V> BorrowDecode<'de> for HashMap<K, V>
447+
impl<'de, K, V, S> BorrowDecode<'de> for HashMap<K, V, S>
448448
where
449449
K: BorrowDecode<'de> + Eq + std::hash::Hash,
450450
V: BorrowDecode<'de>,
451+
S: std::hash::BuildHasher + Default,
451452
{
452453
fn borrow_decode<D: BorrowDecoder<'de>>(decoder: &mut D) -> Result<Self, DecodeError> {
453454
let len = crate::de::decode_slice_len(decoder)?;
454455
decoder.claim_container_read::<(K, V)>(len)?;
455456

456-
let mut map = HashMap::with_capacity(len);
457+
let hash_builder: S = Default::default();
458+
let mut map = HashMap::with_capacity_and_hasher(len, hash_builder);
457459
for _ in 0..len {
458460
// See the documentation on `unclaim_bytes_read` as to why we're doing this here
459461
decoder.unclaim_bytes_read(core::mem::size_of::<(K, V)>());

0 commit comments

Comments
 (0)