Every screen in its place.

Carte is routing and scoped state for any Rust UI. Declare your screens once, derive the path from your state every frame, and let each screen’s state live exactly as long as the screen.

examples/notes.rspath derived every frame
Notes
What Carte seeshomenotetrashdiscardsettings
model
home_child: None
path
home
  • Shared Processtrashed: 0
  • Editor Node("note")not mounted
  • Bin Node("trash")not mounted
Use the app and watch the map. Open settings from inside a note and its draft survives; close the note and its state is dropped.

Your UI draws. Carte knows where you are.

Each screen is a box inside the one that opened it, and its state lives in that box. Close the screen and its state goes with it. State that has to outlive a screen belongs in a box further out.

processShared {notes: 3,dark: true,}
home
Shared sits in the process scope, outside every screen, so it lasts the whole run.

Start navigating.