cargo / bit-vec / audit
cargo : bit-vec @ 0.8.0
PE Patrick Elsen signed 2026-05-27 published 2026-05-27

README.md

149 lines · markdown

<div align="center">  <h1>bit-vec</h1>  <p>    <strong>A compact vector of bits.</strong>  </p>  <p>[![crates.io][crates.io shield]][crates.io link][![Documentation][docs.rs badge]][docs.rs link]![Rust CI][github ci badge][![rustc 1.0+]][Rust 1.0][![serde_derive: rustc 1.31+]][Rust 1.31]<br /><br />[![Dependency Status][deps.rs status]][deps.rs link][![Download Status][shields.io download count]][crates.io link]  </p></div>[crates.io shield]: https://img.shields.io/crates/v/bit-vec?label=latest[crates.io link]: https://crates.io/crates/bit-vec[docs.rs badge]: https://docs.rs/bit-vec/badge.svg?version=0.8.0[docs.rs link]: https://docs.rs/bit-vec/0.8.0/bit_vec/[github ci badge]: https://github.com/contain-rs/linked-hash-map/workflows/Rust/badge.svg?branch=master[rustc 1.0+]: https://img.shields.io/badge/rustc-1.0%2B-blue.svg[serde_derive: rustc 1.31+]: https://img.shields.io/badge/serde_derive-rustc_1.31+-lightgray.svg[Rust 1.0]: https://blog.rust-lang.org/2015/05/15/Rust-1.0.html[Rust 1.31]: https://blog.rust-lang.org/2018/12/06/Rust-1.31-and-rust-2018.html[deps.rs status]: https://deps.rs/crate/bit-vec/0.8.0/status.svg[deps.rs link]: https://deps.rs/crate/bit-vec/0.8.0[shields.io download count]: https://img.shields.io/crates/d/bit-vec.svg## UsageAdd this to your Cargo.toml:```toml[dependencies]bit-vec = "0.8"```Since Rust 2018, `extern crate` is no longer mandatory. If your edition is old (Rust 2015),add this to your crate root:```rustextern crate bit_vec;```If you want [serde](https://github.com/serde-rs/serde) support, include the feature like this:```toml[dependencies]bit-vec = { version = "0.8", features = ["serde"] }```If you want to use bit-vec in a program that has `#![no_std]`, just drop default features:```toml[dependencies]bit-vec = { version = "0.8", default-features = false }```If you want to use serde with the alloc crate instead of std, just use the `serde_no_std` feature:```toml[dependencies]bit-vec = { version = "0.8", default-features = false, features = ["serde", "serde_no_std"] }```If you want [borsh-rs](https://github.com/near/borsh-rs) support, include it like this:```toml[dependencies]bit-vec = { version = "0.8", features = ["borsh"] }```Other available serialization libraries can be enabled with the[`miniserde`](https://github.com/dtolnay/miniserde) and[`nanoserde`](https://github.com/not-fl3/nanoserde) features.<!-- cargo-rdme start -->### DescriptionDynamic collections implemented with compact bit vectors.### ExamplesThis is a simple example of the [Sieve of Eratosthenes][sieve]which calculates prime numbers up to a given limit.[sieve]: http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes```rustuse bit_vec::BitVec;let max_prime = 10000;// Store the primes as a BitVeclet primes = {    // Assume all numbers are prime to begin, and then we    // cross off non-primes progressively    let mut bv = BitVec::from_elem(max_prime, true);    // Neither 0 nor 1 are prime    bv.set(0, false);    bv.set(1, false);    for i in 2.. 1 + (max_prime as f64).sqrt() as usize {        // if i is a prime        if bv[i] {            // Mark all multiples of i as non-prime (any multiples below i * i            // will have been marked as non-prime previously)            for j in i.. {                if i * j >= max_prime {                    break;                }                bv.set(i * j, false)            }        }    }    bv};// Simple primality tests below our max boundlet print_primes = 20;print!("The primes below {} are: ", print_primes);for x in 0..print_primes {    if primes.get(x).unwrap_or(false) {        print!("{} ", x);    }}println!();let num_primes = primes.iter().filter(|x| *x).count();println!("There are {} primes below {}", num_primes, max_prime);assert_eq!(num_primes, 1_229);```<!-- cargo-rdme end -->## LicenseDual-licensed for compatibility with the Rust project.Licensed under the Apache License Version 2.0: http://www.apache.org/licenses/LICENSE-2.0,or the MIT license: http://opensource.org/licenses/MIT, at your option.