#range #no-std #manipulate #bit-manipulation #bit-index

no-std bit

A library which provides helpers to manipulate bits and bit ranges

2 releases

Uses old Rust 2015

0.1.1 Apr 12, 2017
0.1.0 Apr 11, 2017

#2243 in Rust patterns

Download history 1039/week @ 2024-12-01 703/week @ 2024-12-08 814/week @ 2024-12-15 852/week @ 2024-12-22 763/week @ 2024-12-29 866/week @ 2025-01-05 893/week @ 2025-01-12 619/week @ 2025-01-19 269/week @ 2025-01-26 842/week @ 2025-02-02 945/week @ 2025-02-09 834/week @ 2025-02-16 807/week @ 2025-02-23 1233/week @ 2025-03-02 2896/week @ 2025-03-09 1995/week @ 2025-03-16

7,035 downloads per month
Used in 11 crates (8 directly)

MIT/Apache

7KB
104 lines

Bit

crates.io version badge

bit is a library which provides some useful helpers for dealing with bits and bit ranges. For now it's just a rewrite of rust-bit-field crate, but more features are planned. Some of them could be:

  • Support for arrays and slices.
  • bitflags-like functionality.

Usage

Add to your Cargo.toml:

[dependencies]
bit = "0.1"

And add to your code:

extern crate bit;
use bit::BitIndex;

Example

extern crate bit;
use bit::BitIndex;

fn main() {
    let mut value = 0b11010110u8;

    // 8
    println!("{}", u8::bit_length());

    // true
    println!("{}", value.bit(1));

    // 0b10
    println!("{:#b}", value.bit_range(0..2));

    value
        .set_bit(3, true)
        .set_bit(2, false)
        .set_bit_range(5..8, 0b001);

    // 0b111010
    println!("{:#b}", value);
}

lib.rs:

This crate adds simple bit-manipulation helpers in a convenient trait. Also, it implements them for the unsigned primitive types.

No runtime deps