turbo_pfor_sys/
lib.rs

1// prerequisites: Install TurboPFor library libic under /usr/lib or /usr/local/lib
2#![allow(non_upper_case_globals)]
3#![allow(non_camel_case_types)]
4#![allow(non_snake_case)]
5include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
6
7#[cfg(test)]
8mod tests {
9    #[test]
10    fn test_round_trip() {
11        const n: usize = 3;
12        let mut nums = vec![33_u32, 44, 77];
13        let mut compressed = vec![0_u8; 1000];
14        let mut recovered = vec![0_u32; n];
15        unsafe {
16            crate::p4nd1enc128v32(nums.as_mut_ptr(), 3, compressed.as_mut_ptr());
17            crate::p4nd1dec128v32(compressed.as_mut_ptr(), n, recovered.as_mut_ptr());
18        }
19        assert_eq!(recovered, nums);
20    }
21}