summaryrefslogtreecommitdiff
path: root/ecs/src/archetype.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ecs/src/archetype.rs')
-rw-r--r--ecs/src/archetype.rs17
1 files changed, 15 insertions, 2 deletions
diff --git a/ecs/src/archetype.rs b/ecs/src/archetype.rs
index 5c104b7..d2ee36a 100644
--- a/ecs/src/archetype.rs
+++ b/ecs/src/archetype.rs
@@ -16,12 +16,25 @@ pub struct Id
impl Id
{
pub fn from_components_metadata(
- components_metadata: impl IntoIterator<Item = ComponentMetadata>,
+ components_metadata: &impl AsRef<[ComponentMetadata]>,
) -> Self
{
+ debug_assert!(
+ components_metadata.as_ref().len() > 0,
+ "Cannot create a archetype ID from a empty component metadata list"
+ );
+
+ debug_assert!(
+ components_metadata
+ .as_ref()
+ .is_sorted_by_key(|comp_metadata| comp_metadata.id),
+ "Cannot create archetype ID from a unsorted component metadata list"
+ );
+
Self::new(
components_metadata
- .into_iter()
+ .as_ref()
+ .iter()
.filter_map(|component_metadata| {
if component_metadata.is_optional == ComponentIsOptional::Yes {
return None;