bits_io/io/
borrow_bits.rs1use 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}