struct_compression_analyzer/utils/
bitstream_ext.rs1use bitstream_io::{BitReader, Endianness};
2use std::io::{self, Read, Seek, SeekFrom};
3
4pub(crate) trait BitReaderExt {
6 fn remaining_bits(&mut self) -> io::Result<u64>;
8}
9
10impl<R, E> BitReaderExt for BitReader<R, E>
11where
12 R: Read + Seek,
13 E: Endianness,
14{
15 fn remaining_bits(&mut self) -> io::Result<u64> {
16 let current_pos = self.position_in_bits()?;
18
19 let total_bits = self.seek_bits(SeekFrom::End(0))?;
21
22 self.seek_bits(SeekFrom::Start(current_pos))?;
24
25 Ok(total_bits - current_pos)
27 }
28}