tskit_rust

Crates.iotskit_rust
lib.rstskit_rust
version0.1.0
sourcesrc
created_at2020-12-20 23:58:43.172875
updated_at2020-12-20 23:58:43.172875
descriptionrust interface to tskit
homepagehttps://github.com/molpopgen/tskit_rust
repositoryhttps://github.com/molpopgen/tskit_rust
max_upload_size
id325038
size853,480
Kevin R. Thornton (molpopgen)

documentation

README

rust bindings for tskit

CI tests

This crate provides rust bindings to tskit.

This package provides the following:

  1. Low-level bindings to the C API of both tskit and kastore. We use bindgen to automatically generate the bindings.
  2. The struct tskit_rust::TableCollection, which wraps tsk_table_collection_t. The wrapper is currently incomplete, supporting only node, edge, site, mutation, and population tables. The remaining tables will happen "soon".
  3. An error handling system that maps tskit error codes to rust errors while preserving error messages.

The overview is:

  1. tskit and kastore source from tskit 0.3.4 are include in subprojects/
  2. These two tools are compiled into the rust package.
  3. Then bindgen generates the bindings.
  4. 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_rust::bindings, allowing unsafe access to the low-level API.

In the future, we hope to develop a more "rusty" front-end, hiding the unsafe bits from client code.

Help wanted!

Quick start guide

git clone https://github.com/molpopgen/tskit_rust
cd tskit_rust
git submodule update --init --recursive
cargo build
cargo test

Then, to look at the docs:

cargo doc --open
Commit count: 455

cargo fmt