Skip to content

kossebau/rust-ffi-guide

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

231 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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-guide

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/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

Contributing

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

Contributors

About

A guide for doing FFI using Rust

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Rust 62.3%
  • C++ 20.5%
  • CMake 15.5%
  • Shell 1.7%