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
use error::*; use serialization::ModuleMapperSerde; use std::collections::HashMap; #[derive(Clone, Debug)] pub struct ModuleMapper { module_map: HashMap<String, usize>, } impl ModuleMapper { pub fn new(module_map: HashMap<String, usize>) -> Self { ModuleMapper { module_map: module_map, } } pub fn get<TName>(&self, module_name: TName) -> Result<usize> where TName: AsRef<str> { let module_name = module_name.as_ref(); match self.module_map.get(module_name) { Some(some) => Ok(some.clone()), None => { Err(ErrorKind::ModuleNotFoundInModuleMap(module_name.to_string()).into()) }, } } pub fn get_raw_map(&self) -> &HashMap<String, usize> { &self.module_map } pub fn make_serde(&self) -> ModuleMapperSerde { ModuleMapperSerde::new(&self.module_map) } }