1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#![deny(unsafe_code, missing_docs, rust_2018_idioms)]
#![allow(missing_docs)]
pub mod ewah;
pub(crate) mod decode {
use std::convert::TryInto;
use quick_error::quick_error;
quick_error! {
#[derive(Debug)]
pub enum Error {
Corrupt(message: &'static str) {
display("{}", message)
}
}
}
#[inline]
pub(crate) fn split_at_pos(data: &[u8], pos: usize) -> Option<(&[u8], &[u8])> {
if data.len() < pos {
return None;
}
data.split_at(pos).into()
}
#[inline]
pub(crate) fn u32(data: &[u8]) -> Option<(u32, &[u8])> {
split_at_pos(data, 4).map(|(num, data)| (u32::from_be_bytes(num.try_into().unwrap()), data))
}
}