GUI development in Rust is still young, and hard issues like accessibility and platform-nativeness are still a work in progress. Using bindings to GUI frameworks/libraries written in other languanges allows you to access more established ecosystems, while still developing your application in Rust.

There are many possibilities here, as can be seen by the list of external framework bindings below, but if you have decided to go this route, we currently recommend GTK because of their huge community, and its ability to provide a fairly native UI on desktop platforms, especially on Linux.

  • GLFW3 bindings and idiomatic wrapper for Rust.
    opengl vulkan windowing
  • High-level Rust bindings to dear imgui
  • Flutter/Dart <-> Rust binding generator, feature-rich, but seamless and simple
    bindings code-generation dart ffi flutter
  • Rust bindings for the FLTK GUI library
    gui toolkit ui user-interface widgets
  • Rust bindings for Tk GUI library
    binding gui tcl tk
  • LVGL bindings for Rust. A powerful and easy-to-use embedded GUI with many widgets, advanced visual effects (opacity, antialiasing, animations) and low memory requirements (16K RAM, 64K Flash).
    graphical_interfaces littlevgl lvgl

GTK


Qt


  • Safe interop between Rust and Qt
    cxx ffi qml qt
  • Expose rust object to Qt and QML.
    qmetaobject qml qt

SDL


  • SDL2 bindings for Rust
    api engine graphics sdl windowing
  • Cross-platform multimedia
    audio cross-platform engine graphics input