use byteorder::ByteOrder;
pub trait ReadSlice<'a> {
fn read_u8(&mut self) -> Option<u8>;
fn read_u16<B: ByteOrder>(&mut self) -> Option<u16>;
fn read_u32<B: ByteOrder>(&mut self) -> Option<u32>;
fn read_u64<B: ByteOrder>(&mut self) -> Option<u64>;
fn read_u128<B: ByteOrder>(&mut self) -> Option<u128>;
fn read_uint32<B: ByteOrder>(&mut self, nb_bytes: usize) -> Option<u32>;
fn read_uint64<B: ByteOrder>(&mut self, nb_bytes: usize) -> Option<u64>;
fn read_uint128<B: ByteOrder>(&mut self, nb_bytes: usize) -> Option<u128>;
fn read_i8(&mut self) -> Option<i8>;
fn read_i16<B: ByteOrder>(&mut self) -> Option<i16>;
fn read_i32<B: ByteOrder>(&mut self) -> Option<i32>;
fn read_i64<B: ByteOrder>(&mut self) -> Option<i64>;
fn read_i128<B: ByteOrder>(&mut self) -> Option<i128>;
fn read_int32<B: ByteOrder>(&mut self, nb_bytes: usize) -> Option<i32>;
fn read_int64<B: ByteOrder>(&mut self, nb_bytes: usize) -> Option<i64>;
fn read_int128<B: ByteOrder>(&mut self, nb_bytes: usize) -> Option<i128>;
fn read_f32<B: ByteOrder>(&mut self) -> Option<f32>;
fn read_f64<B: ByteOrder>(&mut self) -> Option<f64>;
fn read_slice(&mut self, nb_bytes: usize) -> Option<&'a [u8]>;
fn read_slice_to_end(&mut self) -> &'a [u8];
#[must_use]
fn move_forward(&mut self, nb_bytes: usize) -> Option<()>;
}