add contains_key convenience component store method

This commit is contained in:
Gered 2022-05-15 14:40:06 -04:00
parent 2470919d17
commit 4e291f33dc

View file

@ -203,11 +203,13 @@ impl Entities {
pub trait ComponentStoreConvenience<T: Component> { pub trait ComponentStoreConvenience<T: Component> {
fn single(&self) -> Option<(&EntityId, &T)>; fn single(&self) -> Option<(&EntityId, &T)>;
fn get(&self, k: &EntityId) -> Option<&T>; fn get(&self, k: &EntityId) -> Option<&T>;
fn contains_key(&self, k: &EntityId) -> bool;
} }
pub trait ComponentStoreConvenienceMut<T: Component> { pub trait ComponentStoreConvenienceMut<T: Component> {
fn single_mut(&mut self) -> Option<(&EntityId, &T)>; fn single_mut(&mut self) -> Option<(&EntityId, &T)>;
fn get_mut(&mut self, k: &EntityId) -> Option<&mut T>; fn get_mut(&mut self, k: &EntityId) -> Option<&mut T>;
fn contains_key(&mut self, k: &EntityId) -> bool;
} }
impl<'a, T: Component> ComponentStoreConvenience<T> for Option<RefComponents<'a, T>> { impl<'a, T: Component> ComponentStoreConvenience<T> for Option<RefComponents<'a, T>> {
@ -227,6 +229,14 @@ impl<'a, T: Component> ComponentStoreConvenience<T> for Option<RefComponents<'a,
None None
} }
} }
fn contains_key(&self, k: &EntityId) -> bool {
if let Some(components) = self {
components.contains_key(k)
} else {
false
}
}
} }
impl<'a, T: Component> ComponentStoreConvenience<T> for Option<RefMutComponents<'a, T>> { impl<'a, T: Component> ComponentStoreConvenience<T> for Option<RefMutComponents<'a, T>> {
@ -246,6 +256,14 @@ impl<'a, T: Component> ComponentStoreConvenience<T> for Option<RefMutComponents<
None None
} }
} }
fn contains_key(&self, k: &EntityId) -> bool {
if let Some(components) = self {
components.contains_key(k)
} else {
false
}
}
} }
impl<'a, T: Component> ComponentStoreConvenienceMut<T> for Option<RefMutComponents<'a, T>> { impl<'a, T: Component> ComponentStoreConvenienceMut<T> for Option<RefMutComponents<'a, T>> {
@ -265,6 +283,14 @@ impl<'a, T: Component> ComponentStoreConvenienceMut<T> for Option<RefMutComponen
None None
} }
} }
fn contains_key(&mut self, k: &EntityId) -> bool {
if let Some(components) = self {
components.contains_key(k)
} else {
false
}
}
} }
pub trait OptionComponentStore<T: Component> { pub trait OptionComponentStore<T: Component> {