I’m going to investigate to building a Rust wrapper for Qt. For those who don’t about Qt it a cross-platform UI library written in C++ https://www.qt.io/application-development/ It has lots of features in various areas.
Some work has been done for Rust already in this space:
https://github.com/cyndis/qmlrs - http://doc.qt.io/qt-5/qtquick-index.html - This exposes a small part of Qt.
https://github.com/kitech/qt.rs - These are the most complete bindings our there. Dev on this seems to have slowed down, it needs some python scripts and such to generate the bindings and is split into several repositories.
The two biggest challanges I see with getting good Rust support are these:
http://doc.qt.io/qt-5/signalsandslots.html - I wonder if there is a good way to express this in Rust. The C++ version requires to you to use a tool to parse the C++ code and generates some new code for signal “bindings”
The C++ API is built around that you sub-class widgets by using inheritance. I wonder if this would really be required in a Rust version or perhaps composition only and signals would be enough?
My plan of attack for the majority of the bindings is to do something similar to qt.rs but opt for a pure Rust solution (will likely use libclang for header parsing also but there is a crate for that already yah
So if anyone has any experience with using Qt (in either C++ or some other lang) I would love to hear about suggestions on how the API could look and work.