summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ecs/src/util.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/ecs/src/util.rs b/ecs/src/util.rs
index 17436ff..6f7aed7 100644
--- a/ecs/src/util.rs
+++ b/ecs/src/util.rs
@@ -252,6 +252,8 @@ impl BitMask<u64>
#[must_use]
pub const fn field_prep(self, field_value: u64) -> u64
{
+ debug_assert!(field_value < 1 << self.mask.count_ones());
+
((field_value) << self.mask.trailing_zeros()) & (self.mask)
}
}
@@ -319,4 +321,11 @@ mod tests
{
assert_eq!(BitMask::new(0b11000).field_prep(3), 0b11000);
}
+
+ #[test]
+ #[should_panic]
+ fn bitmask_field_prep_too_large_value_panics()
+ {
+ let _ = BitMask::new(0b001110).field_prep(9);
+ }
}