pub enum Resolution<State>where
State: 'static,{
Matched {
location: Location,
params: BTreeMap<String, String>,
pages: Vec<ResolvedPage<State>>,
},
Error {
location: Location,
},
}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.
The outcome of Router::resolve: either a matched chain of pages (with the
final resolved location and merged params) or an error fallback.
Variants§
Matched
The location matched a route chain. pages is the chain root→leaf; for a
flat route it holds a single page. params is the merged param map (the
location’s query merged under the path captures — a capture wins a
name collision), location the final (post-redirect) location.
Error
No route matched (or a redirect loop exceeded the limit); the caller falls
back to the router’s error_builder.
Implementations§
Source§impl<State> Resolution<State>where
State: 'static,
impl<State> Resolution<State>where
State: 'static,
Sourcepub fn is_matched(&self) -> bool
pub fn is_matched(&self) -> bool
Whether this resolution matched a route (vs. the error fallback).
Sourcepub fn params(&self) -> BTreeMap<String, String>
pub fn params(&self) -> BTreeMap<String, String>
The merged params (query under path captures), or an empty map for an error resolution.
Sourcepub fn page_count(&self) -> usize
pub fn page_count(&self) -> usize
The number of pages in a matched chain (0 for an error resolution).
Auto Trait Implementations§
impl<State> !RefUnwindSafe for Resolution<State>
impl<State> !Send for Resolution<State>
impl<State> !Sync for Resolution<State>
impl<State> !UnwindSafe for Resolution<State>
impl<State> Freeze for Resolution<State>
impl<State> Unpin for Resolution<State>
impl<State> UnsafeUnpin for Resolution<State>
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.