1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
use super::{BitOps, BitState};

impl BitOps for u8 {
    fn set_bit(&mut self, pos: u8) {
        assert!(pos <= 7, "bit offset larger than 7");

        *self |= 1u8 << pos;
    }

    fn clear_bit(&mut self, pos: u8) {
        assert!(pos <= 7, "bit offset larger than 7");

        *self &= !(1u8 << pos);
    }

    fn check_bit(&self, pos: u8) -> BitState {
        assert!(pos <= 7, "bit offset larger than 7");

        match self.checked_shr(pos as u32).unwrap() & 1 == 1 {
            true => BitState::Set,
            false => BitState::Clear,
        }
    }
}