[−][src]Crate bitarray
Collections implemented with bit arrays.
Examples
This is a simple example of the Sieve of Eratosthenes which calculates prime numbers up to a given limit.
extern crate typenum; use bitarray::BitArray; use typenum::{Unsigned, U10000}; // Store the primes as a BitArray let primes = { // Assume all numbers are prime to begin, and then we // cross off non-primes progressively let mut bv = BitArray::<u32, U10000>::from_elem(true); // Neither 0 nor 1 are prime bv.set(0, false); bv.set(1, false); for i in 2.. 1 + (U10000::to_usize() 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 >= U10000::to_usize() { 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, U10000::to_usize()); assert_eq!(num_primes, 1_229);
Re-exports
pub use generic_array; |
pub use typenum; |
Structs
BitArray | The bitarray type. |
Blocks | An iterator over the blocks of a |
IntoIter | |
Iter | An iterator for |
Traits
BitsIn | Traits for determing how many bits a primitive contains |
Type Definitions
BitsInOut | |
BlocksNum | |
StorageLen |