//! Navigation for Cranpose: a typed back stack, a `NavHost` that shows its top
//! screen, and a view model store per screen.
//!
//! | Android | Cranpose |
//! |---|---|
//! | `rememberNavController()` + `startDestination` | [`rememberNavController`], a `Copy` [`NavController`] |
//! | `NavHost(navController) { composable<Route> { } }` | [`NavHost`] with a `match` on the route |
//! | `NavHost(enterTransition, exitTransition)` | [`NavHostWith`] |
//! | `navigate(route)`, `popBackStack()`, `navigateUp()` | [`NavController::navigate`], [`NavController::pop_back_stack`], [`NavController::navigate_up`] |
//! | `navigate(route) { popUpTo(..) { inclusive }; launchSingleTop }` | [`NavController::navigate_with`] and [`NavOptions`] |
//! | `popBackStack(route, inclusive)` | [`NavController::pop_back_stack_to`] |
//! | `currentBackStackEntryAsState()`, `currentBackStack` | [`NavController::current_route`], [`NavController::back_stack`] |
//! | `viewModel()` scoped to a `NavBackStackEntry` | `cranpose_coroflow::viewModel` inside a screen |
//!
//! A route is any `Clone + PartialEq` value, usually an enum whose variants
//! carry the screen's arguments.
pub use ;
pub use ;