Crates.io | bitval |
lib.rs | bitval |
version | 0.1.0 |
source | src |
created_at | 2024-08-08 10:17:29.792999 |
updated_at | 2024-08-08 10:17:29.792999 |
description | For packing booleans in variables using bitwise operations |
homepage | |
repository | |
max_upload_size | |
id | 1329381 |
size | 6,714 |
A Bitfield
is a data structure that allows efficient storage and manipulation of individual bits. This implementation uses a Vec<u64>
to store the bits, allowing for compact storage and fast access.
The Bitfield
struct provides methods to create a bitfield of a specified size, set the value of individual bits, and get the value of individual bits.
To create a new Bitfield
with a specific number of bits, use the new
method:
let size = 128;
let mut bitfield = Bitfield::new(size);
This will create a Bitfield
with 128 bits, all initially set to 0.
To set the value of a specific bit, use the set
method:
bitfield.set(5, true); // Set the 5th bit to 1
bitfield.set(10, false); // Set the 10th bit to 0
If the provided index is out of bounds, the method will panic with an "Index out of bounds" message.
To get the value of a specific bit, use the get
method:
let value = bitfield.get(5); // Get the value of the 5th bit
println!("Value of 5th bit: {}", value);
If the provided index is out of bounds, the method will panic with an "Index out of bounds" message.
Here's an example demonstrating how to use the Bitfield
struct:
use bitval::Bitfield;
fn main() {
let size = 128;
let mut bitfield = Bitfield::new(size);
bitfield.set(5, true);
bitfield.set(10, false);
let value = bitfield.get(5);
println!("Value of 5th bit: {}", value); // Output: Value of 5th bit: true
}
To include the bitval
crate in your project, add the following entry to your Cargo.toml
file:
[dependencies]
bitval = "0.1.0" // Replace with the current version
This will compile and run the tests, verifying that the Bitfield
implementation behaves correctly.
This project is licensed under the MIT License.