diff options
-rw-r--r-- | ecs/src/util.rs | 9 |
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); + } } |