libcsp-rust/README.md

31 lines
1.4 KiB
Markdown
Raw Normal View History

2024-05-31 19:48:12 +02:00
libcsp-rust
=========
This project aims to provide libraries and tools to use
[`libcsp`](https://github.com/libcsp/libcsp) in your Rust project.
It provides 2 crates for this:
- [`libcsp-cargo-build`] provides an API to build the `libcsp` using `cargo` with the
[`cc`](https://docs.rs/cc/latest/cc/) crate.
- [`libcsp-rust`] provides the Rust bindings to `libcsp` and a safe and ergonomic Rust interface.
In addition, it provides a workspace to allow updating the `libcsp` and the corresponding bindings
more easily inside the `lib` directory. Some of the examples `libcsp` provides were ported to Rust
and are showcases in the `examples` directory.
## Getting started
We assume that cargo should also take care of building the library.
1. Add the `libcsp-cargo-build` as a build dependency inside your `Cargo.toml`.
2. Add the `libcsp-rust` as a regular dependency inside your `Cargo.toml`.
3. Create a custom `build.rs` script which takes care of building `libcsp` using the API
provided by `libcsp-cargo-build`. You have to provide the source code for `libcsp` inside some
directory and pass that director to a builder API.
4. You can now write regular Rust code and use the API provided by `libcsp-rust` to use `libcsp`
in a safe and Rusty way.
It is recommended to have a look at the [example build script]() which should give you a general
idea of how a build script might look like to integrate `libcsp`.