cpp_to_rust allows to use C++ libraries from Rust. The main target of this project is Qt.
Using published Qt crates
This project maintains the following Qt crates (more will hopefully be added in the future):
If you just want to use these crates, add them as dependencies to your
Cargo.toml, for example:
[dependencies] qt_widgets = "0.2"
And add corresponding
extern crate directives to the crate root (
extern crate qt_widgets;
Each crate re-exports its dependencies, so, for example, you can access
qt_widgets::qt_core without adding an explicit dependency.
Online documentation of published Qt crates (you may also run
cargo doc --open to generate documentation for your crate's dependencies).
Published crates required a certain Qt version (currently 5.8.0) and don't export platform-specific API.
Using the generator
If you want to use another Qt version, access platform-specific Qt APIs or tweak the generator configuration, refer to README of qt_generator for more information.
If you want to generate Rust crates for another C++ library or learn about implementation details, see README of cpp_to_rust_generator.
The project consists of the following Rust crates:
- cpp_to_rust/cpp_to_rust_generator implements the generator;
- cpp_to_rust/cpp_to_rust_build_tools implements the build script for generated crates;
- cpp_to_rust/cpp_to_rust_common contains common code for the previous two crates;
- cpp_to_rust/cpp_utils provides essential utilities used by generated crates;
- qt_generator/qt_generator contains generator configuration for the Qt crates and a binary file for running the generator;
- qt_generator/qt_build_tools implements the advanced build script for Qt crates;
- qt_generator/qt_generator_common contains common code for the previous two crates.
README.md in each crate for detailed description.
Contributions are always welcome! You can contribute in different ways:
- Suggest a C++ library to adapt;
- Submit a bug report, a feature request, or an improvement suggestion at the issue tracker;
- Write a test for
- Write a test or an example for a Qt crate (porting examples from the official Qt documentation is a good option);
- Pick up an issue with help wanted tag or any other issue you like.