Skip to main content

GlobalRouter

Struct GlobalRouter 

Source
pub struct GlobalRouter { /* private fields */ }
Expand description

Global router state accessible from any component.

This is the central routing object stored as a GPUI global. It holds the navigation state, route registry, and orchestrates the navigation pipeline (guards -> middleware -> navigation -> middleware).

Implementations§

Source§

impl GlobalRouter

Source

pub fn new() -> Self

Create a new global router with empty state and no registered routes.

Source

pub const fn match_stack(&self) -> &MatchStack

Get the pre-resolved match stack for the current path.

Outlets call this during render to find their route by depth index. The stack is built once per navigation, so this is O(1).

Source

pub const fn previous_stack(&self) -> Option<&MatchStack>

Available on crate feature transition only.

Get the previous match stack (for transition animations).

Source

pub fn add_route(&mut self, route: Route)

Register a route and re-resolve the match stack.

If the route has a name, it is also registered in the NamedRouteRegistry for URL generation via url_for.

Source

pub fn push(&mut self, path: String, cx: &App) -> NavigationResult

Navigate to a path, running the full guard/middleware pipeline.

Pipeline:

  1. Collect guards from matched route (+ ancestors)
  2. Check guards — if any denies/redirects, navigation is blocked
  3. Run before_navigation middleware
  4. Perform actual navigation
  5. Run after_navigation middleware
Source

pub fn replace(&mut self, path: String, cx: &App) -> NavigationResult

Replace current path, running the full guard/middleware pipeline.

Source

pub fn back(&mut self, cx: &App) -> Option<NavigationResult>

Go back in history, checking guards on the target route.

Source

pub fn forward(&mut self, cx: &App) -> Option<NavigationResult>

Go forward in history, checking guards on the target route.

Source

pub fn push_with_state( &mut self, path: String, state: HistoryState, cx: &App, ) -> NavigationResult

Push a new path with associated HistoryState data, running the full pipeline.

Allows attaching arbitrary key-value state (scroll position, form data, etc.) to the history entry. The pipeline (guards, middleware) runs first; state is only attached if navigation succeeds.

Source

pub fn replace_with_state( &mut self, path: String, state: HistoryState, cx: &App, ) -> NavigationResult

Replace current path with associated HistoryState data, running the full pipeline.

Source

pub fn current_entry(&self) -> &HistoryEntry

Return the current HistoryEntry (path + optional state data).

Source

pub fn push_named( &mut self, name: &str, params: &RouteParams, cx: &App, ) -> Option<NavigationResult>

Navigate to a named route, resolving the URL from params.

Returns None if the name is not registered.

Source

pub fn url_for(&self, name: &str, params: &RouteParams) -> Option<String>

Generate a URL for a named route by substituting params into its pattern.

Returns None if the name is not registered.

Source

pub fn current_path(&self) -> &str

Return the current navigation path.

Source

pub fn current_match(&mut self) -> Option<RouteMatch>

Get current route match (with caching, requires mutable).

Source

pub fn current_match_immutable(&self) -> Option<RouteMatch>

Get current route match (immutable, no caching).

Source

pub fn current_route(&self) -> Option<&Arc<Route>>

Get the current matched Route.

Source

pub const fn can_go_back(&self) -> bool

Check if can go back.

Source

pub fn can_go_forward(&self) -> bool

Check if can go forward.

Source

pub fn state_mut(&mut self) -> &mut RouterState

Get mutable state reference.

Source

pub const fn state(&self) -> &RouterState

Get state reference.

Source

pub fn nested_cache_mut(&mut self) -> &mut RouteCache

Available on crate feature cache only.

Get nested route cache (mutable).

Source

pub const fn cache_stats(&self) -> &CacheStats

Available on crate feature cache only.

Get nested route cache statistics.

Source

pub fn set_error_handlers(&mut self, handlers: ErrorHandlers)

Set custom error handlers for 404 and navigation errors.

Source

pub const fn error_handlers(&self) -> &ErrorHandlers

Get a reference to the current error handlers.

Source

pub fn get_cached_component(&self, key: &str) -> Option<&AnyView>

Get a cached component view by key.

Source

pub fn cache_component(&mut self, key: String, view: AnyView)

Store a component view in the cache, evicting the oldest entry if full.

Source

pub fn set_next_transition(&mut self, transition: Transition)

Available on crate feature transition only.

Set transition for the next navigation.

Source

pub fn take_next_transition(&mut self) -> Option<Transition>

Available on crate feature transition only.

Get and consume the next transition override.

Source

pub const fn has_next_transition(&self) -> bool

Available on crate feature transition only.

Check if there’s a transition override set.

Source

pub fn clear_next_transition(&mut self)

Available on crate feature transition only.

Clear transition override.

Source

pub fn push_with_transition( &mut self, path: String, transition: Transition, cx: &App, ) -> NavigationResult

Available on crate feature transition only.

Navigate with a specific transition.

Source

pub fn replace_with_transition( &mut self, path: String, transition: Transition, cx: &App, ) -> NavigationResult

Available on crate feature transition only.

Replace with a specific transition.

Trait Implementations§

Source§

impl Clone for GlobalRouter

Source§

fn clone(&self) -> GlobalRouter

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for GlobalRouter

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Global for GlobalRouter

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> NoneValue for T
where T: Default,

Source§

type NoneType = T

Source§

fn null_value() -> T

The none-equivalent value.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ReadGlobal for T
where T: Global,

Source§

fn global(cx: &App) -> &T

Returns the global instance of the implementing type. Read more
Source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> UpdateGlobal for T
where T: Global,

Source§

fn update_global<C, F, R>(cx: &mut C, update: F) -> R
where C: BorrowAppContext, F: FnOnce(&mut T, &mut C) -> R,

Updates the global instance of the implementing type using the provided closure. Read more
Source§

fn set_global<C>(cx: &mut C, global: T)

Set the global instance of the implementing type.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more