1 unstable release
0.1.0 | Dec 20, 2020 |
---|
#97 in #edge
670KB
18K
SLoC
rust bindings for tskit
This crate provides rust bindings to tskit.
This package provides the following:
- Low-level bindings to the C API of both
tskit
andkastore
. We use bindgen to automatically generate the bindings. - The struct
tskit_rust::TableCollection
, which wrapstsk_table_collection_t
. The wrapper is currently incomplete, supporting only node, edge, site, mutation, and population tables. The remaining tables will happen "soon". - An error handling system that maps
tskit
error codes torust
errors while preserving error messages.
The overview is:
tskit
andkastore
source fromtskit 0.3.4
are include insubprojects/
- These two tools are compiled into the
rust
package. - Then
bindgen
generates 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_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
Dependencies
~0.3–2.9MB
~60K SLoC