Store multiple abilities as a VecSet

This commit is contained in:
Ayaz Hafiz 2022-10-12 11:36:44 -05:00
parent 603160dae3
commit 2011ec97c3
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
3 changed files with 27 additions and 9 deletions

View file

@ -1,6 +1,6 @@
use std::{borrow::Borrow, iter::FromIterator};
#[derive(Clone, Debug, PartialEq)]
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
pub struct VecSet<T> {
elements: Vec<T>,
}
@ -26,6 +26,12 @@ impl<T: PartialEq> VecSet<T> {
}
}
pub fn singleton(element: T) -> Self {
Self {
elements: vec![element],
}
}
pub fn len(&self) -> usize {
self.elements.len()
}
@ -145,3 +151,11 @@ impl<T> From<Vec<T>> for VecSet<T> {
Self { elements }
}
}
impl<T> std::ops::Deref for VecSet<T> {
type Target = [T];
fn deref(&self) -> &Self::Target {
&self.elements
}
}