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 {