summaryrefslogtreecommitdiff
path: root/vendor/bit-vec/README.md
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-07-02 18:36:06 -0600
committermo khan <mo@mokhan.ca>2025-07-02 18:36:06 -0600
commit8cdfa445d6629ffef4cb84967ff7017654045bc2 (patch)
tree22f0b0907c024c78d26a731e2e1f5219407d8102 /vendor/bit-vec/README.md
parent4351c74c7c5f97156bc94d3a8549b9940ac80e3f (diff)
chore: add vendor directory
Diffstat (limited to 'vendor/bit-vec/README.md')
-rw-r--r--vendor/bit-vec/README.md148
1 files changed, 148 insertions, 0 deletions
diff --git a/vendor/bit-vec/README.md b/vendor/bit-vec/README.md
new file mode 100644
index 00000000..2d699534
--- /dev/null
+++ b/vendor/bit-vec/README.md
@@ -0,0 +1,148 @@
+<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
+
+## Usage
+
+Add 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:
+
+```rust
+extern 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 -->
+
+### Description
+
+Dynamic collections implemented with compact bit vectors.
+
+### Examples
+
+This 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
+
+```rust
+use bit_vec::BitVec;
+
+let max_prime = 10000;
+
+// Store the primes as a BitVec
+let 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 bound
+let 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 -->
+
+## License
+
+Dual-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.