diff options
Diffstat (limited to 'vendor/clap_builder/src/util/flat_set.rs')
-rw-r--r-- | vendor/clap_builder/src/util/flat_set.rs | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/vendor/clap_builder/src/util/flat_set.rs b/vendor/clap_builder/src/util/flat_set.rs deleted file mode 100644 index 3e0b23d..0000000 --- a/vendor/clap_builder/src/util/flat_set.rs +++ /dev/null @@ -1,107 +0,0 @@ -#![allow(dead_code)] - -use std::borrow::Borrow; - -/// Flat (Vec) backed set -/// -/// This preserves insertion order -#[derive(Clone, Debug, PartialEq, Eq)] -pub(crate) struct FlatSet<T> { - inner: Vec<T>, -} - -impl<T: PartialEq + Eq> FlatSet<T> { - pub(crate) fn new() -> Self { - Default::default() - } - - pub(crate) fn insert(&mut self, value: T) -> bool { - for existing in &self.inner { - if *existing == value { - return false; - } - } - self.inner.push(value); - true - } - - pub fn contains<Q: ?Sized>(&self, value: &Q) -> bool - where - T: Borrow<Q>, - Q: Eq, - { - for existing in &self.inner { - if existing.borrow() == value { - return true; - } - } - false - } - - pub fn retain<F>(&mut self, f: F) - where - F: FnMut(&T) -> bool, - { - self.inner.retain(f); - } - - pub(crate) fn is_empty(&self) -> bool { - self.inner.is_empty() - } - - pub(crate) fn iter(&self) -> std::slice::Iter<'_, T> { - self.inner.iter() - } - - pub fn sort_by_key<K, F>(&mut self, f: F) - where - F: FnMut(&T) -> K, - K: Ord, - { - self.inner.sort_by_key(f); - } -} - -impl<T: PartialEq + Eq> Default for FlatSet<T> { - fn default() -> Self { - Self { - inner: Default::default(), - } - } -} - -impl<T: PartialEq + Eq> IntoIterator for FlatSet<T> { - type Item = T; - type IntoIter = std::vec::IntoIter<T>; - - fn into_iter(self) -> Self::IntoIter { - self.inner.into_iter() - } -} - -impl<'s, T: PartialEq + Eq> IntoIterator for &'s FlatSet<T> { - type Item = &'s T; - type IntoIter = std::slice::Iter<'s, T>; - - fn into_iter(self) -> Self::IntoIter { - self.inner.iter() - } -} - -impl<T: PartialEq + Eq> Extend<T> for FlatSet<T> { - fn extend<I: IntoIterator<Item = T>>(&mut self, iter: I) { - for value in iter { - self.insert(value); - } - } -} - -impl<T: PartialEq + Eq> FromIterator<T> for FlatSet<T> { - fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self { - let mut set = Self::new(); - for value in iter { - set.insert(value); - } - set - } -} |