This crate provides rust bindings to tskit.
This package provides the following:
- Low-level bindings to the C API of both tskitandkastore. We use bindgen to automatically generate the bindings.
- Support for table collections, tree sequences, and tree iteration.
- An error handling system that maps tskiterror codes torusterrors while preserving error messages.
The overview is:
- tskitand- kastoreC code are include in- subprojects/
- These two tools are compiled into the rustpackage.
- Then bindgengenerates the bindings.
- Finally, the entire rust package is generated.
The result is a rust library with all of these two C libraries statically compiled in.
Further, rust types and functions exist in the module name tskit::bindings, allowing unsafe access to the low-level API.
Help wanted!
git clone https://github.com/tskit-dev/tskit-rust
cd tskit-rust
cargo test --all-featurescargo doc --all-features --open
API documentation for the latest release is here. A manual is here.
First, install tarpaulin:
cargo install cargo-tarpaulinThen, we use all tests, doc tests, and example programs to calculate code coverage for all available features:
cargo tarpaulin --all-features --doc --tests --examples --exclude-files '*.c' --exclude-files '*.h' --ignore-tests  -o htmlThen, point your favorite browser to tarpaulin-report.html.
The last few flags exclude the C code and any rust code that is test-only from being part of the denominator of the coverage calculation.
The goal here is not to have high test coverage of the C API, as it is up to the upstream project to provide that.
Note: tarpaulin can be fickle, and changing the order of some of those flags can cause the coverage run to fail.
See here.
under scrutinty
Example:
git cliff -u --tag v0.11.0 --date-order -p CHANGELOG.md