Crates.io | bit_manipulation |
lib.rs | bit_manipulation |
version | 0.2.40 |
source | src |
created_at | 2024-04-26 21:04:06.14158 |
updated_at | 2024-05-04 11:03:42.65106 |
description | bit_manipulation: A lightweight Rust crate for seamless management and validation of up to 128 option states. Empower your applications with efficient, flexible, and intuitive option handling, ensuring smooth activation checks and manipulation. |
homepage | |
repository | |
max_upload_size | |
id | 1221867 |
size | 29,863 |
A Rust library for manipulating unsigned integers from u8 to u128, allowing you to set, clear, or retrieve individual bits.
Bit Manipulation: Set, clear, and retrieve individual bits within unsigned integers.
Cross-Type Support: Works with u8
, u16
, u32
, u64
, and u128
types.
Efficient Storage: Handles bit manipulation efficiently by storing bits as boolean flags.
Efficient Implementation: Utilizes bitwise operations for high-performance bit manipulation.
Intuitive API: Provides a straightforward API for working with u8..u128, making it easy to integrate into your Rust projects.
Creates a new Bits instance with all bits initially set to 0.
Checks if the specified bit is on (1) or off (0).
Checks if multiple specified bits are on (1) or off (0).
false
) or not (true
).Sets the specified bit within the unsigned integer value represented by the Bits struct.
The bit parameter indicates the position of the bit to set, starting from 0 for the least significant bit.
Note:
The maximum value that the bit parameter can have depends on the base type T.
For example, if T is u8, the maximum valid value for bit would be 7 (since u8 has 8 bits, indexed from 0 to 7).
Attempting to set a bit with a value higher than the maximum valid index will result in the function returning false without modifying the state of the Bits struct.
Sets the multiple specified bits within the unsigned integer value represented by the Bits struct.
Note:
The maximum value that the each bit can have depends on the base type T.
For example, if T is u8, the maximum valid value for bit would be 7 (since u8 has 8 bits, indexed from 0 to 7).
Attempting to set a bit with a value higher than the maximum valid index will result in the function to ignore and continue to set valid bits.
false
) or not (true
).Clears the specified bit, setting it to 0.
Clears the specified bits in a value of type T
, where T
is expected to be one of:
u8
, u16
, u32
, u64
, or u128
. Only the bits that are within the range of the maximum
value of type T
will be cleared. For example, if the base type is u8
and the method
is called with the vector a reference to the vector [1, 5, 10]
, only the bits at positions 1 and 5 will be cleared,
since u8
does not have a 10th bit.
false
) or not (true
).Clears all bits, setting them to 0.
Sets all bits to 1, effectively setting the value to the maximum possible value of given type T.
use bit_manipulation::Bits;
fn main() {
// Create a new bit set for u8 integers
let mut bits: Bits<u8> = Bits::new();
// Try to set a bit that exceeds the size of the integer
let set_success = bits.set_bit(10);
// Check if the bit is on (should be false)
assert!(!bits.is_bit_on(10));
// Check if the operation was successful
assert!(!set_success);
// Try to clear a bit that exceeds the size of the integer
let clear_success = bits.clear_bit(10);
// Check if the bit is off (should be false)
assert!(!bits.is_bit_on(10));
// Check if the operation was successful
assert!(!clear_success);
}
use bit_manipulation::bit_manipulation::Bits;
fn main() {
// Create a new bit set for u8 integers
let mut bits: Bits<u8> = Bits::new();
// Try to set a bit that exceeds the size of the integer
let operation_success = bits.set_bit(10);
// Check if the bit is on (should be false)
assert!(!bits.is_bit_on(10));
// Check if the operation was successful
assert!(!operation_success);
}
use bit_manipulation::bit_manipulation::Bits;
fn main() {
// Create a new bit set for u8 integers
let mut bits: Bits<u8> = Bits::new();
let arr = vec![1, 3, 5, 2, 65];
// Set multiple bits
bits.set_bits(&arr);
// Check if specific bits are on
let activated_bits = bits.are_bits_on(&arr);
assert_eq!(activated_bits, &vec![false, true, true, true, false, true, false, false]);
// Clear all bits
bits.clear_all_bits();
// Check if all bits are cleared
assert_eq!(bits.get_value(), 0);
}
You can contact me at dieriba.pro@gmail.com, for any additional requests or features you wand to add !