| 934 | } |
| 935 | |
| 936 | pub fn lzcount(&self, size: usize) -> Self { |
| 937 | assert!(size <= RawValue::SIZE); |
| 938 | let mut result = Self { |
| 939 | value: Default::default(), |
| 940 | size: size, |
| 941 | }; |
| 942 | let value = match self.size { |
| 943 | 1 => self.as_u8().leading_zeros(), |
| 944 | 2 => self.as_u16().leading_zeros(), |
| 945 | 4 => self.as_u32().leading_zeros(), |
| 946 | 8 => self.as_u64().leading_zeros(), |
| 947 | 16 => self.as_u128().leading_zeros(), |
| 948 | _ => unimplemented!(), |
| 949 | }; |
| 950 | result.value = value.into(); |
| 951 | result |
| 952 | } |
| 953 | } |
| 954 | |
| 955 | impl From<u128> for SizedValue { |