1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- use crate::prelude::{ExternalNavigationFailure, NavigationTarget, Routable, RouterContext};
- /// A view into the navigation state of a router.
- #[derive(Clone)]
- pub struct GenericNavigator(pub(crate) RouterContext);
- impl GenericNavigator {
- /// Check whether there is a previous page to navigate back to.
- #[must_use]
- pub fn can_go_back(&self) -> bool {
- self.0.can_go_back()
- }
- /// Check whether there is a future page to navigate forward to.
- #[must_use]
- pub fn can_go_forward(&self) -> bool {
- self.0.can_go_forward()
- }
- /// Go back to the previous location.
- ///
- /// Will fail silently if there is no previous location to go to.
- pub fn go_back(&self) {
- self.0.go_back();
- }
- /// Go back to the next location.
- ///
- /// Will fail silently if there is no next location to go to.
- pub fn go_forward(&self) {
- self.0.go_forward();
- }
- /// Push a new location.
- ///
- /// The previous location will be available to go back to.
- pub fn push<R: Routable>(
- &self,
- target: impl Into<NavigationTarget<R>>,
- ) -> Option<ExternalNavigationFailure> {
- self.0.push(target)
- }
- /// Replace the current location.
- ///
- /// The previous location will **not** be available to go back to.
- pub fn replace<R: Routable>(
- &self,
- target: impl Into<NavigationTarget<R>>,
- ) -> Option<ExternalNavigationFailure> {
- self.0.replace(target)
- }
- }
|