### 6 releases

0.2.1 | Dec 24, 2022 |
---|---|

0.2.0 | Dec 5, 2022 |

0.1.3 | Apr 10, 2022 |

0.1.1 | Mar 18, 2022 |

#**687** in Data structures

**44** downloads per month

Used in **2** crates

**MIT/Apache**

40KB

703 lines

is the Rust library by Piotr Beling for bit and bitmap (bit vector) manipulation.`bitm`

# Example

`use` `bitm``::``{`BitAccess`,` BitVec`,` BitArrayWithRank`,` ArrayWithRank101111`}``;`
`let` `mut` b `=` `Box``:``:``<``[``u64``]``>``::`with_zeroed_bits`(``2048``)``;` `//` b can store 2048 bits
`assert_eq!``(`b`.``get_bit``(``100``)``,` `false``)``;` `//` b is zeroed so bit at index 100 is not set
b`.``set_bit``(``100``)``;` `//` set the bit
`assert_eq!``(`b`.``get_bit``(``100``)``,` `true``)``;` `//` now it is set
`assert_eq!``(`b`.``get_bits``(``99``,` `5``)``,` `0b00010``)``;` `//` 5 bits, beginning from index 99, should be 00010
`let` `(`r`,` ones`)` `=` `ArrayWithRank101111``::`build`(`b`)``;`
`assert_eq!``(`ones`,` `1``)``;` `//` one bit is set in b
`assert_eq!``(`r`.``rank``(``100``)``,` `0``)``;` `//` no ones in the first 100 bits of b
`assert_eq!``(`r`.``rank``(``101``)``,` `1``)``;` `//` 1 one in the first 101 bits of b
`assert_eq!``(`r`.``rank``(``999``)``,` `1``)``;` `//` 1 one in the first 999 bits of b