From 88a972c9cca61d45991afc29a08c85279273e743 Mon Sep 17 00:00:00 2001 From: Arik Sosman Date: Wed, 6 Mar 2024 23:10:08 -0800 Subject: [PATCH] Optimize duplicate parent detection. --- src/inscriptions/inscription.rs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/inscriptions/inscription.rs b/src/inscriptions/inscription.rs index 7338eab4ea..73428c366e 100644 --- a/src/inscriptions/inscription.rs +++ b/src/inscriptions/inscription.rs @@ -248,21 +248,19 @@ impl Inscription { } pub(crate) fn parents(&self) -> Vec { - let mut parents: Vec = self + let mut unique_parents: HashSet> = HashSet::with_capacity(self.parents.len()); + self .parents .iter() .map(|p| { + if !unique_parents.insert(p.clone()) { + return None; + } // the option detour is a bit awkward Self::inscription_id_field(&Some(p.clone())) }) .flatten() - .collect(); - - // remove duplicates - let mut uniques: HashSet = HashSet::with_capacity(self.parents.len()); - parents.retain(|p| uniques.insert(p.clone())); - - parents + .collect() } pub(crate) fn pointer(&self) -> Option {