y_octo/doc/
hasher.rs

1use std::{
2    collections::HashMap,
3    hash::{BuildHasher, Hasher},
4};
5
6use super::Client;
7
8#[derive(Default)]
9pub struct ClientHasher(Client);
10
11impl Hasher for ClientHasher {
12    fn finish(&self) -> u64 {
13        self.0
14    }
15
16    fn write(&mut self, _: &[u8]) {}
17
18    fn write_u64(&mut self, i: u64) {
19        self.0 = i
20    }
21}
22
23#[derive(Default, Clone)]
24pub struct ClientHasherBuilder;
25
26impl BuildHasher for ClientHasherBuilder {
27    type Hasher = ClientHasher;
28
29    fn build_hasher(&self) -> Self::Hasher {
30        ClientHasher::default()
31    }
32}
33
34// use ClientID as key
35pub type ClientMap<V> = HashMap<Client, V, ClientHasherBuilder>;