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 bittersweetOr 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_emptyas_fullby_rangebytes_lengthlengthis_emptyis_not_emptyis_fullis_not_fullfirst_indexlast_indexradiusaroundwith_aroundfirst_bitlast_bitfirst_bitslast_bitsfilled_first_bit_to_last_bitnum_bitsbit_reprrangeincludesoverlapsremoveleft_rotateright_rotatebin_to_gray_codegray_code_to_binbit_reversal_permutation_to_binbin_to_bit_reversal_permutationtwo_bits_gray_code_rotation
BSD-3-Clause