Tu veux construire une app desktop avec une interface graphique de qualité ? Connais-tu GPUI Component ? Il s'agit d'une suite de composants graphiques pour Rust. Les specs sont alléchantes :
+ 60 composants multiplateforme
Natif et largement inspiré de macOS et Windows
Implémentation simple
Personnalisation
Flexibilité des layouts
Le contenu peut être rendu en markdown ou html

Exemple :
use gpui::*;
use gpui_component::{button::*, *};
pub struct HelloWorld;
impl Render for HelloWorld {
fn render(&mut self, _: &mut Window, _: &mut Context<Self>) -> impl IntoElement {
div()
.v_flex()
.gap_2()
.size_full()
.items_center()
.justify_center()
.child("Hello, World!")
.child(
Button::new("ok")
.primary()
.label("Let's Go!")
.on_click(|_, _, _| println!("Clicked!")),
)
}
}
fn main() {
let app = Application::new();
app.run(move |cx| {
// This must be called before using any GPUI Component features.
gpui_component::init(cx);
cx.spawn(async move |cx| {
cx.open_window(WindowOptions::default(), |window, cx| {
let view = cx.new(|_| HelloWorld);
// This first level on the window, should be a Root.
cx.new(|cx| Root::new(view, window, cx))
})?;
Ok::<_, anyhow::Error>(())
})
.detach();
});
}
GPUI n'est pas l'unique solution UI pour Rust, il existe Iced ou encore egui. L'un des manques de GPUI est l'absence du support web, un rendu HTML encore rudimentique. Le projet est très jeune.