Crate dotbits

Source
Expand description

Traits that add convenient bit manipulation methods to unsigned integers (u8, u16, u32, u64, u128, usize) and boolean vectors (Vec<bool>).

§Endianness

Unless stated otherwise, all default implementations assume little-endianness (least significant bit first). For example, position 0 of the value 0b00001111u8 would be equal to 1/true, not 0/false. If big-endianness is desired, you must reverse the value.

With a Vec<bool>, you can use the built-in Vec.reverse() function if you’re not running in a no_std environment. With primitive integer types, use the built-in reverse_bits() function that exists for every primitive integer.

§Examples

Bit shifts using negative numbers:

use dotbits::BitManip;

assert_eq!(24u32.signed_left_shift(2), 24u32 << 2);
assert_eq!(24u32.signed_left_shift(-2), 24u32 >> 2);
assert_eq!(24u32.signed_right_shift(2), 24u32 >> 2);
assert_eq!(24u32.signed_right_shift(-2), 24u32 << 2);

Traits§

BitManip
A trait that provides utility methods for simple bit manipulation.
BitVec
A trait that provides additional helper methods on Vec<bool>.