Build Status

Implementation of succinct bit vectors for lecture ‘advanced datastructures’ at KIT. Find code documentation here.


General usage is confertus [bv|bp] input_file output_file (if you were to install it via cargo install --path .).


Available commands, depending on selected algorithm:

Dynamic Bitvector: algo bv

Dynamic Tree datastructure (via Balanced Parentheses): algo bp

(more information about supported operations can also be found in the documentation, specifically on traits and the specific implementations for bv and bp)

Install Rust and Execute

Install rustup via your distributions package manager, or, according to the official rust website via:

$ curl --proto '=https' --tlsv1.2 -sSf | sh
$ # Ensure that ~/.local/bin is in your PATH.
$ # now we need to set the default toolchain
$ rustup default stable

$ # Or, in case of a previous rust install, update with:
$ rustup update

$ # Build and open documentation locally
$ cargo doc --open

$ # Build and run (debug, provides additional information on execution)
$ cargo run [bp|bv] input_file output_file

$ # Run tests
$ cargo test

$ # Build and run (optimized)
$ RUSTFLAGS="-C target-cpu=native" cargo run --release [bp|bv] input_file output_file



These are dependencies required to execute tests, not for running the binary itself.

I recommend running cargo watch on a terminal nearby during active development. It runs cargo check on filechange.

Remarks on usage

This project is an inefficient, incomplete and unsound implementation of a dynamic bit vector as part of a university lecture requirement. Again, it is not complete and contains numerous bugs. I recommend using established implementations such as bitvec and succinct.