cpp_to_rust
allows to use C++ libraries from Rust. The main target of this project is Qt.
This project maintains the following Qt crates (more will hopefully be added in the future):
Crate | Version |
---|---|
qt_core | |
qt_gui | |
qt_widgets | |
qt_ui_tools | |
qt_3d_core | |
qt_3d_render | |
qt_3d_input | |
qt_3d_logic | |
qt_3d_extras |
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 (main.rs
or lib.rs
):
extern crate qt_widgets;
Each crate re-exports its depenencies, so, for example, you can access qt_core
as 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.
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.
See 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
cpp_to_rust_generator
crate; - 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.