Add ModId

This commit is contained in:
Aleksey Kladov 2018-11-20 14:52:10 +03:00
parent 902778ccae
commit 4e683d7af1

View file

@ -72,17 +72,26 @@ pub(crate) trait NumericId: Clone + Eq + Hash {
fn to_u32(self) -> u32; fn to_u32(self) -> u32;
} }
macro_rules! impl_numeric_id {
($id:ident) => {
impl NumericId for $id {
fn from_u32(id: u32) -> Self {
$id(id)
}
fn to_u32(self) -> u32 {
self.0
}
}
};
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub(crate) struct FnId(u32); pub(crate) struct FnId(u32);
impl_numeric_id!(FnId);
impl NumericId for FnId { #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
fn from_u32(id: u32) -> FnId { pub(crate) struct ModId(u32);
FnId(id) impl_numeric_id!(ModId);
}
fn to_u32(self) -> u32 {
self.0
}
}
pub(crate) trait IdDatabase: salsa::Database { pub(crate) trait IdDatabase: salsa::Database {
fn id_maps(&self) -> &IdMaps; fn id_maps(&self) -> &IdMaps;