pub enum NavChange {
Initial,
Push,
Pop,
Replace,
Reset,
}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.
How the page stack changed between the last two published RouteStacks.
DERIVED from the diff of consecutive published stacks — never recorded at
a mutation site (see the module docs).
Variants§
Initial
The first publish this navigator ever made (no previous stack to diff against).
Push
The new stack is the previous one plus exactly one more entry on top.
Pop
The new stack is a strict prefix of the previous one (exactly one entry removed from the top).
Replace
Same depth as the previous stack; only the top entry differs.
Reset
Anything else — e.g. a router go() that swaps the whole chain in one
batch, or a multi-page pop that isn’t a strict-prefix shrink.
Trait Implementations§
Auto Trait Implementations§
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.