Alchemy is a Rust GUI Framework, backed by native widgets on each platform it supports, with an API that's a blend of those found in AppKit, UIKit, and React Native. It supports a JSX-ish syntax (RSX), styling with CSS, the safety of building in Rust, and a familiar API for many developers who build UI on a daily basis. The goal is to provide an API that feels at home in Rust, while striving to provide a visual appearance that's easy to scan and parse. It does not, and will never, require nightly. It's still early stages, but feedback and contributions are welcome.
use alchemy::{ AppDelegate, Error, RSX, rsx, styles, View, Window, WindowDelegate }; struct AppState { window: Window } impl AppDelegate for AppState { fn did_finish_launching(&mut self) { self.window.set_title("LOL"); self.window.set_dimensions(10., 10., 600., 600.); self.window.show(); } } struct WindowState; impl WindowDelegate for WindowState { fn render(&self) -> Result<RSX, Error> { Ok(rsx! { <View styles=["box"]> <View styles=["innerbox"] /> </View> }) } } fn main() { let app = alchemy::shared_app(); app.register_styles("default", styles! { box { background-color: #307ace; width: 300; height: 300; margin-top: 10; padding-top: 10; } innerbox { background-color: #003366; width: 200; height: 200; } }); app.run(AppState { window: Window::new(WindowState { }) }); }