3 releases
0.1.2 | Jul 17, 2023 |
---|---|
0.1.1 | Jul 16, 2023 |
0.1.0 | Aug 10, 2022 |
#3 in #predicates
55KB
784 lines
bittersweet
Bittersweet is a library for bit manipulation.
Motivation
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
Usage
Installation
You can install this library via cargo.
$ cargo add bittersweet
Or you can add this to your Cargo.toml
manually.
Example
use bittersweet::bitline::{Bitline, Bitline8};
fn main() {
let t = 0b00111000_u8 as Bitline8;
if t.includes(0b00110000_u8) {
println!("Yes!");
}
}
Supported bitline length
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
)
Documentation
See docs.rs
Manipulations
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
range
remove
License
BSD-3-Clause