Skip to content
Portable high-level bitwise manipulation algorithms
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
benches
examples
src
.gitignore
.travis.yml
Cargo.toml
build.rs
clippy.toml
license.md
readme.md

readme.md

Portable high-level bitwise manipulation algorithms

crates.io version Travis build status Coveralls.io code coverage Docs License

We do what we must because we can.

The algorithms:

  • have descriptive names to ease reading code that performs bit manipulations,
  • often optimize to perfect assembly code (and always on nightly by using the bitintr crate),
  • works on stable unstable only :( due to specialization for now.

Example

extern crate bitwise;
use bitwise::word::*;

fn main() {
  let u = outer_perfect_shuffle(0b_1001_1111u8);
  let v = inner_perfect_shuffle(0b_1001_1111u8);
  let w = u.copy_bit(4u8, v, 3u8);
  assert_eq!(w.parallel_bits_deposit(u), 0b_1001_0011u8);
}

Supported compilers

The minimum required rustc version is >= 1.13.0.

Requires unstable for now.

Performance

Some algorithms like the Morton Z-Curve encoding/decoding routines switch implementation at compile-time depending on target features (like BMI2 support).

License

Licensed under the MIT license.

Acknowledgments

The giants that came before us:

Contribution

Yes please! Just note that all contributions shall be licensed as above without any additional terms or conditions. The following people have contributed code to this library:

You can’t perform that action at this time.