diff --git a/compiler/erg_common/lib.rs b/compiler/erg_common/lib.rs index 08db9016..ed50f82f 100644 --- a/compiler/erg_common/lib.rs +++ b/compiler/erg_common/lib.rs @@ -118,3 +118,8 @@ where } Ok(v) } + +pub fn unique_in_place(v: &mut Vec) { + let mut uniques = Set::new(); + v.retain(|e| uniques.insert(e.clone())); +} diff --git a/compiler/erg_common/set.rs b/compiler/erg_common/set.rs index 64272882..08a132f0 100644 --- a/compiler/erg_common/set.rs +++ b/compiler/erg_common/set.rs @@ -141,8 +141,8 @@ impl Set { } #[inline] - pub fn insert(&mut self, value: T) { - self.elems.insert(value); + pub fn insert(&mut self, value: T) -> bool { + self.elems.insert(value) } #[inline]