feat: only need to compare unique and index

This commit is contained in:
rvcas 2022-06-17 15:39:31 -04:00
parent b8c5c268d4
commit cbea795f68
No known key found for this signature in database
GPG Key ID: C09B64E263F7D68C
1 changed files with 14 additions and 2 deletions

View File

@ -66,12 +66,18 @@ pub enum Constant {
/// A Name containing it's parsed textual representation /// A Name containing it's parsed textual representation
/// and a unique id from string interning. The Name's text is /// and a unique id from string interning. The Name's text is
/// interned during parsing. /// interned during parsing.
#[derive(Debug, Clone, PartialEq)] #[derive(Debug, Clone)]
pub struct Name { pub struct Name {
pub text: String, pub text: String,
pub unique: Unique, pub unique: Unique,
} }
impl PartialEq for Name {
fn eq(&self, other: &Self) -> bool {
self.unique == other.unique
}
}
/// A unique id used for string interning. /// A unique id used for string interning.
#[derive(Debug, Clone, PartialEq, Copy, Eq, Hash)] #[derive(Debug, Clone, PartialEq, Copy, Eq, Hash)]
pub struct Unique(isize); pub struct Unique(isize);
@ -110,12 +116,18 @@ impl Display for Unique {
/// Similar to `Name` but for Debruijn indices. /// Similar to `Name` but for Debruijn indices.
/// `Name` is replaced by `NamedDebruijn` when converting /// `Name` is replaced by `NamedDebruijn` when converting
/// program to it's debruijn form. /// program to it's debruijn form.
#[derive(Debug, Clone, PartialEq)] #[derive(Debug, Clone)]
pub struct NamedDeBruijn { pub struct NamedDeBruijn {
pub text: String, pub text: String,
pub index: DeBruijn, pub index: DeBruijn,
} }
impl PartialEq for NamedDeBruijn {
fn eq(&self, other: &Self) -> bool {
self.index == other.index
}
}
/// This is useful for decoding a on chain program into debruijn form. /// This is useful for decoding a on chain program into debruijn form.
/// It allows for injecting fake textual names while also using Debruijn for decoding /// It allows for injecting fake textual names while also using Debruijn for decoding
/// without having to loop through twice. /// without having to loop through twice.