Skip to content
A guide for doing FFI using Rust
Rust C++ CMake Dockerfile Shell
Branch: master
Clone or download
Michael-F-Bryan Merge pull request #76 from fdb/patch-1
Use --lib to create a Cargo library
Latest commit bb1d0cd Oct 1, 2018

Using unsafe for Fun and Profit

Build Status Creative Commons Zero License

A guide to traversing the FFI boundary between Rust and other languages. A rendered version is available here. This guide is centred around the idea of building a REST client using Qt (C++) for the GUI and reqwest (Rust) for the business logic.


Building and viewing the book locally is really easy. First you need to get the source code:

$ git clone

Make sure you have mdbook installed:

$ cargo install mdbook

Then tell mdbook to build and serve the book:

$ mdbook serve --open

It should now be viewable at http://localhost:3000/ (if it didn't open up automatically).

To build the application itself you'll need the following installed:

  • qt5
  • rust (install with rustup)
  • mdbook (cargo install mdbook)

In this application we're using cmake as the build system. The ci/ script will make a build/ directory and invoke cmake to compile and test everything.

$ ./ci/

The final application should now be at build/gui.

Alternatively, if you don't want to install all the dependencies I've created a docker image (michaelfbryan/ffi-guide) for compiling Rust and Qt.

$ docker run \
    -v $(pwd):/code \
    -v ~/.cargo:$HOME/.cargo \
    -e CARGO_HOME=$HOME/.cargo \
    --user $UID \
    michaelfbryan/ffi-guide ci/


If there's anything you feel is missing or could be improved, please create an issue. Pull requests are welcome too!


You can’t perform that action at this time.