pub struct Route<State>where
State: 'static,{ /* private fields */ }Expand description
The declarative router vocabulary (a go_router-subset layer),
flat-re-exported from frust-widgets so app code never names that
crate directly: Router resolves a location against a Route table
(built via RouteBuilder) into Resolution/ResolvedPages driving
a NavigatorController, with :param/query parsing
(Location/PathPattern/RouteParams), per-route/top-level
Redirects (loop-guarded at DEFAULT_REDIRECT_LIMIT), and an
ErrorBuilder fallback for an unmatched location.
A page builder receives the location’s query merged under its path
captures, so /terminal?session=abc reads its own parameter.
RouteNavigator is the seam a screen navigates through: a Send + Sync
queue of NavRequest data (paths and names, never closures) that rides
provide_context — the Router itself cannot, since it holds Rc page
builders. RouterDeepLinks::track drains it every rebuild, so a request
queued in an event handler (on any thread — the queue never panics
off-thread) applies on the next frame.
shell_route is the nested-navigator binding: its children resolve onto a
second NavigatorController the app owns and its own page — the chrome
wrapping that inner navigator — stays retained while they do, so navigating
between siblings inside the shell never rebuilds the chrome. See its docs
for the keep rule and the per-verb table.
One entry in a Router’s route table: a path pattern, a page builder, and
optional name, per-route redirect, and nested children. Built
fluently — Route::new then .name/.redirect/.child/.children.
Nested children’s patterns compose with this route’s (go_router semantics): a
route /users with a child :id matches /users/42, and the matched chain
is [/users, /users/:id].
Implementations§
Source§impl<State> Route<State>where
State: 'static,
impl<State> Route<State>where
State: 'static,
Sourcepub fn new(
path: impl Into<String>,
builder: impl Fn(&BTreeMap<String, String>) -> AnyView<State> + 'static,
) -> Route<State>
pub fn new( path: impl Into<String>, builder: impl Fn(&BTreeMap<String, String>) -> AnyView<State> + 'static, ) -> Route<State>
A route matching path (a pattern like /users/:id, or a relative child
path like :id), rendered by builder.
Sourcepub fn name(self, name: impl Into<String>) -> Route<State>
pub fn name(self, name: impl Into<String>) -> Route<State>
Give this route a name for go_named/
push_named resolution.
Sourcepub fn redirect(
self,
redirect: impl Fn(&Location) -> Option<String> + 'static,
) -> Route<State>
pub fn redirect( self, redirect: impl Fn(&Location) -> Option<String> + 'static, ) -> Route<State>
Attach a per-route redirect, consulted (against the resolved location) whenever this route is part of a matched chain.
Auto Trait Implementations§
impl<State> !RefUnwindSafe for Route<State>
impl<State> !Send for Route<State>
impl<State> !Sync for Route<State>
impl<State> !UnwindSafe for Route<State>
impl<State> Freeze for Route<State>
impl<State> Unpin for Route<State>
impl<State> UnsafeUnpin for Route<State>where
Rc<dyn Fn(&BTreeMap<String, String>) -> AnyView<State>>: UnsafeUnpin,
Vec<Route<State>>: UnsafeUnpin,
Option<NavigatorController<State>>: UnsafeUnpin,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.