1mod bool;
2mod floats;
3mod hash_map;
4mod hash_set;
5mod ints;
6mod option;
7mod string;
8mod tuple;
9mod vec;
10
11use crate::prelude::*;
12
13pub(self) fn unordered_unique_stable_hash<H: StableHasher>(
14 items: impl Iterator<Item = impl StableHash>,
15 field_address: H::Addr,
16 state: &mut H,
17) {
18 profile_fn!(unordered_unique_stable_hash);
19
20 for member in items {
21 let mut new_hasher = H::new();
25 let (a, b) = field_address.unordered();
26 member.stable_hash(a, &mut new_hasher);
27 state.write(b, new_hasher.to_bytes().as_ref());
28 }
29}
30
31impl<'a, T: StableHash> StableHash for &'a T {
32 #[inline]
33 fn stable_hash<H: StableHasher>(&self, field_address: H::Addr, state: &mut H) {
34 profile_method!(stable_hash);
35
36 (*self).stable_hash(field_address, state)
37 }
38}