pub struct RouteStack { /* 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.
The page stack as route identities, bottom→top. None at an index means
that page was pushed as a bare builder (an overlay/dialog): it carries no
location, and it must never retitle route-derived chrome — see the module
docs.
Cloned out of NavigatorController::route_stack
— a snapshot, not a live handle. See the module docs’ staleness
contract for what “authoritative-at-publish” does and does not promise.
Implementations§
Source§impl RouteStack
impl RouteStack
Sourcepub fn entries(&self) -> &[Option<Location>]
pub fn entries(&self) -> &[Option<Location>]
Every page’s route identity, bottom→top. None at an index is a
route-less (overlay/dialog) page — see the module docs.
Sourcepub fn current(&self) -> Option<&Location>
pub fn current(&self) -> Option<&Location>
The topmost page’s route identity, None if it has none (an
overlay/dialog on top). Chrome that needs to skip a route-less top
wants current_route instead.
Sourcepub fn current_route(&self) -> Option<&Location>
pub fn current_route(&self) -> Option<&Location>
The topmost page that has a route, skipping any route-less
(overlay/dialog) pages above it — the read chrome (an app bar’s title,
e.g.) wants, so a transparent overlay never retitles it. None only
if no page in the stack carries a route at all.
Sourcepub fn generation(&self) -> u64
pub fn generation(&self) -> u64
A monotonically increasing counter, bumped once per actual publish (an unchanged stack across N rebuilds bumps it zero times) — an O(1) change gate for a consumer that only wants to know “did anything happen since I last looked?” without comparing entries itself.
Trait Implementations§
Source§impl Clone for RouteStack
impl Clone for RouteStack
Source§fn clone(&self) -> RouteStack
fn clone(&self) -> RouteStack
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RouteStack
impl Debug for RouteStack
Source§impl Default for RouteStack
impl Default for RouteStack
Source§fn default() -> RouteStack
fn default() -> RouteStack
impl Eq for RouteStack
Source§impl PartialEq for RouteStack
impl PartialEq for RouteStack
impl StructuralPartialEq for RouteStack
Auto Trait Implementations§
impl Freeze for RouteStack
impl RefUnwindSafe for RouteStack
impl Send for RouteStack
impl Sync for RouteStack
impl Unpin for RouteStack
impl UnsafeUnpin for RouteStack
impl UnwindSafe for RouteStack
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<T> Brush for T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.