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 https://github.com/Michael-F-Bryan/rust-ffi-guideMake sure you have mdbook installed:
$ cargo install mdbookThen tell mdbook to build and serve the book:
$ mdbook serve --openIt 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/test.sh script will make a build/ directory and invoke cmake to
compile and test everything.
$ ./ci/test.sh
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/test.sh
If there's anything you feel is missing or could be improved, please create an issue. Pull requests are welcome too!