pub struct Router<T: Clone + ToString + From<String> + PartialEq + 'static> {
pub route: Computed<T>,
/* private fields */
}
Expand description
Router based on hash part of current location.
use vertigo::{dom, Computed, Value, DomNode};
use vertigo::router::Router;
#[derive(Clone, PartialEq, Debug)]
pub enum Route {
Page1,
Page2,
NotFound,
}
impl Route {
pub fn new(path: &str) -> Route {
match path {
"" | "/" | "/page1" => Self::Page1,
"/page2" => Self::Page2,
_ => Self::NotFound,
}
}
}
impl ToString for Route {
fn to_string(&self) -> String {
match self {
Self::Page1 => "/",
Self::Page2 => "/page2",
Self::NotFound => "/404",
}.to_string()
}
}
impl From<String> for Route {
fn from(url: String) -> Self {
Route::new(url.as_str())
}
}
#[derive(Clone)]
pub struct State {
route: Router<Route>,
}
impl State {
pub fn component() -> DomNode {
let route = Router::new_history_router();
let state = State {
route,
};
render(state)
}
}
fn render(state: State) -> DomNode {
dom! {
<div>
"..."
</div>
}
}
Fields§
§route: Computed<T>
Implementations§
source§impl<T: Clone + ToString + From<String> + PartialEq + 'static> Router<T>
impl<T: Clone + ToString + From<String> + PartialEq + 'static> Router<T>
sourcepub fn new_hash_router() -> Router<T>
pub fn new_hash_router() -> Router<T>
Create new Router which sets route value upon hash change in browser bar. If callback is provided then it is fired instead.
sourcepub fn new_history_router() -> Router<T>
pub fn new_history_router() -> Router<T>
Create new Router which sets route value upon url change (works with browser history)
pub fn set(&self, route: T)
Trait Implementations§
source§impl<T: PartialEq + Clone + ToString + From<String> + PartialEq + 'static> PartialEq for Router<T>
impl<T: PartialEq + Clone + ToString + From<String> + PartialEq + 'static> PartialEq for Router<T>
impl<T: Clone + ToString + From<String> + PartialEq + 'static> StructuralPartialEq for Router<T>
Auto Trait Implementations§
impl<T> Freeze for Router<T>
impl<T> !RefUnwindSafe for Router<T>
impl<T> !Send for Router<T>
impl<T> !Sync for Router<T>
impl<T> Unpin for Router<T>
impl<T> !UnwindSafe for Router<T>
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
Mutably borrows from an owned value. Read more