crispii_bits
Overview
Bit operations made safe.
Useful for situations where you're emulating CPU registers or need to carry out bit-level operations on Rust's native unsigned integer types (usize excluded).
Provides three extension methods for each:
- add_with_carry -> Returns a tuple containing the resulting u{int} value, and a Vec of all of the bit positions where carries occurred (the bit that overflowed to the next bit on the left, not the destination bit of the overlow)
- set_bit -> Sets the bit on (1) or off (0) at the position specified
- flip_bit -> Flips the bit (0 -> 1 || 1 -> 0) at the position specified
Each of these methods uses a respective PosU{int} enum for bit selection, guaranteeing safety, though the try_into method is available on the u8 type if desired.
The former approach is less cumbersome in practice:
use *;
let result: u8 = 0b0100_0000.flip_bit;
vs.
use *;
let result: u8 = 0b0100_0000.flip_bit;
Importing
Importing the crate is as simple as importing * from the u{int} module that matches the native u{int} type you want to use.
For example, a u16:
use *;
License: MIT OR Apache-2.0