Skip to content

Latest commit

 

History

History
76 lines (48 loc) · 1.9 KB

README.md

File metadata and controls

76 lines (48 loc) · 1.9 KB

Bitfield

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.

Overview

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.

Usage

Creating a Bitfield

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.

Setting a Bit

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.

Getting a Bit

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.

Example

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
}

Cargo.toml

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.

License

This project is licensed under the MIT License.