-
Notifications
You must be signed in to change notification settings - Fork 5
Description
Motivation
Since the solver was successfully rewritten in Rust, the old issue about Rust (#215) has been closed. The next step in the transition to Rust would be the GUI. While there has been steady progress, the Rust GUI ecosystem does not yet provide a mature alternative that we could use to replace Qt/C++. This issue is supposed to be an assessment of the various Rust UI libraries and where they currently stand with regard to VirtualBow's requirements. It will be updated from time to time to see when the undertaking becomes viable.
Requirements
Features that a UI framework must have or support (on top of the usual stuff) in order to be a viable alternative:
- TableView widget
- TreeView widget
- 2D Plotting library
- 3D Graphics
The following additional requirements are based on my opinions and preferences rather than hard facts:
- Not web-centered: Shouldn't rely on a webview or html and css
- Elm-like or other systematic approach to application state management
Comparison
Egui
Pros
- Only one that fulfills all the requirements above, especially plotting.
- Trivial state management because of immediate mode
- Feels fun and productive, except when doing layout
Cons
- The look and feel is not very "desktop-like"
- Disadvantages of immediate mode
Out of the alternatives listed here, this is currently the only one without definitive showstoppers. I even tried making a small prototype of the VirtualBow UI and got pretty far without too much effort. Still not without its own problems, of course, but getting better with each release.
Iced
Xilem
- TODO
Slint
- TODO
Relm4
- TODO
Links
- three-d: 3D data visualization without too much boilerplate
- A 2025 Survey of Rust GUI Libraries