mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-30 20:44:34 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			38 lines
		
	
	
		
			828 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			828 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| use rustc_data_structures::fingerprint::Fingerprint;
 | |
| use rustc_span::def_id::{DefIndex, DefPathHash};
 | |
| 
 | |
| #[derive(Clone, Default)]
 | |
| pub struct Config;
 | |
| 
 | |
| impl odht::Config for Config {
 | |
|     type Key = DefPathHash;
 | |
|     type Value = DefIndex;
 | |
| 
 | |
|     type EncodedKey = [u8; 16];
 | |
|     type EncodedValue = [u8; 4];
 | |
| 
 | |
|     type H = odht::UnHashFn;
 | |
| 
 | |
|     #[inline]
 | |
|     fn encode_key(k: &DefPathHash) -> [u8; 16] {
 | |
|         k.0.to_le_bytes()
 | |
|     }
 | |
| 
 | |
|     #[inline]
 | |
|     fn encode_value(v: &DefIndex) -> [u8; 4] {
 | |
|         v.as_u32().to_le_bytes()
 | |
|     }
 | |
| 
 | |
|     #[inline]
 | |
|     fn decode_key(k: &[u8; 16]) -> DefPathHash {
 | |
|         DefPathHash(Fingerprint::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>;
 | 
