Add ModId

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

View file

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