Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pola-rs
GitHub Repository: pola-rs/polars
Path: blob/main/crates/polars-parquet/src/parquet/read/levels.rs
6940 views
1
/// Returns the number of bits needed to store the given maximum definition or repetition level.
2
#[inline]
3
pub fn get_bit_width(max_level: i16) -> u32 {
4
16 - max_level.leading_zeros()
5
}
6
7
#[cfg(test)]
8
mod tests {
9
use super::get_bit_width;
10
11
#[test]
12
fn test_get_bit_width() {
13
assert_eq!(0, get_bit_width(0));
14
assert_eq!(1, get_bit_width(1));
15
assert_eq!(2, get_bit_width(2));
16
assert_eq!(2, get_bit_width(3));
17
assert_eq!(3, get_bit_width(4));
18
assert_eq!(3, get_bit_width(5));
19
assert_eq!(3, get_bit_width(6));
20
assert_eq!(3, get_bit_width(7));
21
assert_eq!(4, get_bit_width(8));
22
assert_eq!(4, get_bit_width(15));
23
24
assert_eq!(8, get_bit_width(255));
25
assert_eq!(9, get_bit_width(256));
26
}
27
}
28
29