# Bitfield A `Bitfield` is a data structure that allows efficient storage and manipulation of individual bits. This implementation uses a `Vec` 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: ```rust 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: ```rust 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: ```rust 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: ```rust 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: ```toml [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.