bits_io/io/
borrow_bits.rs

1use bitvec::prelude::*;
2
3pub trait BorrowBits {
4    fn borrow_bits(&self) -> &BitSlice<u8, Msb0>;
5}
6
7impl BorrowBits for Vec<u8> {
8    fn borrow_bits(&self) -> &BitSlice<u8, Msb0> {
9        self.view_bits::<Msb0>()
10    }
11}
12
13impl BorrowBits for BitVec<u8, Msb0> {
14    fn borrow_bits(&self) -> &BitSlice<u8, Msb0> {
15        self.as_bitslice()
16    }
17}
18
19impl BorrowBits for &[u8] {
20    fn borrow_bits(&self) -> &BitSlice<u8, Msb0> {
21        self.view_bits::<Msb0>()
22    }
23}
24
25impl BorrowBits for &BitSlice<u8, Msb0> {
26    fn borrow_bits(&self) -> &BitSlice<u8, Msb0> {
27        self
28    }
29}
30
31impl BorrowBits for &mut [u8] {
32    fn borrow_bits(&self) -> &BitSlice<u8, Msb0> {
33        self.view_bits::<Msb0>()
34    }
35}
36
37impl BorrowBits for &mut BitSlice<u8, Msb0> {
38    fn borrow_bits(&self) -> &BitSlice<u8, Msb0> {
39        self
40    }
41}
42
43pub trait BorrowBitsMut: BorrowBits {
44    fn borrow_bits_mut(&mut self) -> &mut BitSlice<u8, Msb0>;
45}
46
47impl BorrowBitsMut for Vec<u8> {
48    fn borrow_bits_mut(&mut self) -> &mut BitSlice<u8, Msb0> {
49        self.view_bits_mut::<Msb0>()
50    }
51}
52
53impl BorrowBitsMut for BitVec<u8, Msb0> {
54    fn borrow_bits_mut(&mut self) -> &mut BitSlice<u8, Msb0> {
55        self.as_mut_bitslice()
56    }
57}
58
59impl BorrowBitsMut for &mut [u8] {
60    fn borrow_bits_mut(&mut self) -> &mut BitSlice<u8, Msb0> {
61        self.view_bits_mut::<Msb0>()
62    }
63}
64
65impl BorrowBitsMut for &mut BitSlice<u8, Msb0> {
66    fn borrow_bits_mut(&mut self) -> &mut BitSlice<u8, Msb0> {
67        self
68    }
69}