Bittersweet is a library for bit manipulation.
Bit-wise operations are often used in low-level programming and it sometimes contains magical bugs. I want to manipulate bits with more
- type-safe
- well-tested
- well-documented
- fast and efficient
You can install this library via cargo.
$ cargo add bittersweet
Or you can add this to your Cargo.toml
manually.
use bittersweet::bitline::{Bitline, Bitline8};
fn main() {
let t = 0b00111000_u8 as Bitline8;
if t.includes(0b00110000_u8) {
println!("Yes!");
}
}
Following Bitline traits are implemented for u8
, u16
, u32
, u64
, u128
.
So these operations keep zero-cost abstraction.
Bitline8
... 8 bits (u8
)Bitline16
... 16 bits (u16
)Bitline32
... 32 bits (u32
)Bitline64
... 64 bits (u64
)Bitline128
... 128 bits (u128
)
See docs.rs
https://docs.rs/bittersweet/latest/bittersweet/bitline/trait.Bitline.html
as_empty
as_full
by_range
bytes_length
length
is_empty
is_not_empty
is_full
is_not_full
first_index
last_index
radius
around
with_around
first_bit
last_bit
first_bits
last_bits
filled_first_bit_to_last_bit
num_bits
bit_repr
range
includes
overlaps
remove
left_rotate
right_rotate
bin_to_gray_code
gray_code_to_bin
bit_reversal_permutation_to_bin
bin_to_bit_reversal_permutation
two_bits_gray_code_rotation
BSD-3-Clause