freya_router/contexts/
navigator.rs1use crate::prelude::{
2 ExternalNavigationFailure,
3 NavigationTarget,
4 RouterContext,
5};
6
7#[derive(Clone, Copy)]
9pub struct Navigator(pub(crate) RouterContext);
10
11impl Navigator {
12 pub fn try_get() -> Option<Self> {
13 RouterContext::try_get().map(Navigator)
14 }
15
16 pub fn get() -> Self {
17 Navigator(RouterContext::get())
18 }
19
20 #[must_use]
22 pub fn can_go_back(&self) -> bool {
23 self.0.can_go_back()
24 }
25
26 #[must_use]
28 pub fn can_go_forward(&self) -> bool {
29 self.0.can_go_forward()
30 }
31
32 pub fn go_back(&self) {
36 self.0.go_back();
37 }
38
39 pub fn go_forward(&self) {
43 self.0.go_forward();
44 }
45
46 pub fn push(&self, target: impl Into<NavigationTarget>) -> Option<ExternalNavigationFailure> {
50 self.0.push(target)
51 }
52
53 pub fn replace(
57 &self,
58 target: impl Into<NavigationTarget>,
59 ) -> Option<ExternalNavigationFailure> {
60 self.0.replace(target)
61 }
62}