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