CXX
Safe interop between Rust and C++
...It provides a safe mechanism for calling C++ code from Rust and vice versa, one that is protected from the many possible things that can go wrong when bindgen or cbindgen is used to generate unsafe C-style bindings.
The general idea of CXX is to define the signatures of both sides of the FFI boundary embedded together in one Rust module. CXX gets a complete picture from this of the boundary, and through it is able to perform static analyses against the types and function signatures, ensuring that both Rust's and C++'s invariants and requirements are upheld. CXX then emits the relevant extern "C" signatures on both sides through a pair of code generators. This is done together with any necessary static assertions needed for later in the build process to verify correctness. ...