freya_router/router_cfg.rs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
use crate::prelude::Routable;
/// Global configuration options for the router.
///
/// This implements [`Default`] and follows the builder pattern, so you can use it like this:
/// ```rust,no_run
/// # use freya_router::prelude::*;
/// # use freya::prelude::*;
/// # #[component]
/// # fn Index() -> Element {
/// # VNode::empty()
/// # }
/// #[derive(Clone, Routable)]
/// enum Route {
/// #[route("/")]
/// Index {},
/// }
///
/// let cfg = RouterConfig::<Route>::default().with_initial_path(Route::Index {});
/// ```
pub struct RouterConfig<R: Routable> {
pub(crate) initial_path: Option<R>,
}
impl<R: Routable> Default for RouterConfig<R> {
fn default() -> Self {
Self { initial_path: None }
}
}
impl<R: Routable> RouterConfig<R> {
pub fn with_initial_path(self, initial_path: R) -> Self {
Self {
initial_path: Some(initial_path),
}
}
}