gset.rs 679 B

12345678910111213141516171819202122232425262728293031323334
  1. use std::collections::BTreeSet;
  2. #[derive(Debug, Clone, PartialEq, Eq)]
  3. pub struct GSet<T: Ord> {
  4. set: BTreeSet<T>,
  5. }
  6. impl<T: Ord + Clone> GSet<T> {
  7. pub fn new() -> Self {
  8. Self { set: BTreeSet::new() }
  9. }
  10. pub fn insert(&mut self, element: &T) {
  11. self.set.insert(element.clone());
  12. }
  13. pub fn contains(&self, element: &T) -> bool {
  14. self.set.contains(element)
  15. }
  16. pub fn len(&self) -> usize {
  17. self.set.len()
  18. }
  19. pub fn merge(&mut self, other: &Self) {
  20. other.set.iter().for_each(|e| self.insert(e))
  21. }
  22. }
  23. impl<T: Ord + Clone> Default for GSet<T> {
  24. fn default() -> Self {
  25. Self::new()
  26. }
  27. }