frust
Frust is a Rust-native, mobile-first declarative UI framework: write one View tree in Rust and
ship it to Android, iOS, macOS, Windows, Linux, and the web, rendered everywhere by the
frust-owned frust-engine GPU pipeline.
frust is the facade crate. Application code depends on this single crate; it exposes run, the
canonical app entry point, and curates the view, widget and reactive vocabulary from the
underlying framework crates (frust-core, frust-widgets, frust-reactive, frust-theme and
others).
Status: pre-1.0; APIs may change between minor versions.
Platforms
- Android and iOS
- macOS, Windows and Linux (desktop shells)
- Web (WebGPU, with a WebGL2 fallback)
Example
Add the dependency:
[]
= { = "frust-ui", = "0.6" }
= "0.6"
The package is named frust-ui and imported as frust, because the crates.io name frust belongs to another project (https://github.com/lloydmeta/frunk/issues/258).
A counter app, the shape frust create generates. build reads as one declarative tree, and
frust::app! turns the Component into the platform entry points:
use ;
use ;
;
// `setup` runs once on the UI thread before the root `init`. Material 3 is the
// design system; swap in another design-system plugin's `install()` to change it.
app!;
Getting started
Install the command-line tool and create a project:
frust create writes the dependency above into the new project.
Design systems ship as separate plugin crates that an application depends on beside frust; the
facade itself carries only the baseline widget set.
Links
- Documentation: https://frust.dev
- Source: https://github.com/frust-rs/frust
License
Licensed under MIT OR Apache-2.0, at your option. See LICENSE-MIT and LICENSE-APACHE in this directory.