blob: 35c6e57b877001075813ae9cd161e8b1650268a0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  | 
use rustc_hashes::Hash64;
use rustc_span::def_id::DefIndex;
#[derive(Clone, Default)]
pub struct Config;
impl odht::Config for Config {
    // This hash-map is single-crate, so we only need to key by the local hash.
    type Key = Hash64;
    type Value = DefIndex;
    type EncodedKey = [u8; 8];
    type EncodedValue = [u8; 4];
    type H = odht::UnHashFn;
    #[inline]
    fn encode_key(k: &Hash64) -> [u8; 8] {
        k.as_u64().to_le_bytes()
    }
    #[inline]
    fn encode_value(v: &DefIndex) -> [u8; 4] {
        v.as_u32().to_le_bytes()
    }
    #[inline]
    fn decode_key(k: &[u8; 8]) -> Hash64 {
        Hash64::new(u64::from_le_bytes(*k))
    }
    #[inline]
    fn decode_value(v: &[u8; 4]) -> DefIndex {
        DefIndex::from_u32(u32::from_le_bytes(*v))
    }
}
pub type DefPathHashMap = odht::HashTableOwned<Config>;
 
  |