From 4663d46beee4ef2d97f93646d80cbce904ba9aa6 Mon Sep 17 00:00:00 2001 From: copygirl Date: Sat, 21 Sep 2024 15:50:19 +0200 Subject: [PATCH] Update Entity and Relation::try_from --- src/ecs/entity.rs | 7 ++++++- src/ecs/relation.rs | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/ecs/entity.rs b/src/ecs/entity.rs index c07fc1e..8a4ed32 100644 --- a/src/ecs/entity.rs +++ b/src/ecs/entity.rs @@ -116,7 +116,12 @@ impl TryFrom for Entity { type Error = (); #[inline] fn try_from(component: Component) -> Result { - Self::from_bits(component.to_bits()).ok_or(()) + if component.is_entity() { + // SAFETY: If component is valid and an entity, bitwise conversion is valid. + Ok(unsafe { Self::from_bits_unchecked(component.to_bits()) }) + } else { + Err(()) + } } } diff --git a/src/ecs/relation.rs b/src/ecs/relation.rs index 767ccc1..742afc6 100644 --- a/src/ecs/relation.rs +++ b/src/ecs/relation.rs @@ -98,7 +98,12 @@ impl TryFrom for Relation { type Error = (); #[inline] fn try_from(component: Component) -> Result { - Self::from_bits(component.to_bits()).ok_or(()) + if component.is_relation() { + // SAFETY: If component is valid and a relation, bitwise conversion is valid. + Ok(unsafe { Self::from_bits_unchecked(component.to_bits()) }) + } else { + Err(()) + } } }