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
use bitvec::{order::Msb0, slice::BitSlice};

use crate::{BitReader, Error};

pub struct MapErr<T, F> {
    pub(crate) inner: T,
    pub(crate) f: F,
}

impl<R, F, E> BitReader for MapErr<R, F>
where
    R: BitReader,
    F: FnMut(R::Error) -> E,
    E: Error,
{
    type Error = E;

    fn read_bit(&mut self) -> Result<bool, Self::Error> {
        todo!()
    }

    #[inline]
    fn read_bits_into(&mut self, dst: &mut BitSlice<u8, Msb0>) -> Result<(), Self::Error> {
        self.inner.read_bits_into(dst).map_err(&mut self.f)
    }

    #[inline]
    fn skip(&mut self, n: usize) -> Result<(), Self::Error> {
        self.inner.skip(n).map_err(&mut self.f)
    }
}