macro_rules! struct_urls {
    () => { ... };
}
Expand description

Create struct Urls. It’s useful especially for building Urls in nested modules.

Example

use seed::{prelude::*, *};

mod page {
    pub mod admin {
        use seed::{prelude::*, *};
        struct_urls!();
        impl<'a> Urls<'a> { }
    }
}

const ADMIN: &str = "admin";

struct Model {
    base_url: Url
}

enum Msg { }

fn init(url: Url, _: &mut impl Orders<Msg>) -> Model {
    Model {
        base_url: url.to_base_url(),
    }
}

// ------ ------
//     Urls
// ------ ------

struct_urls!();
impl<'a> Urls<'a> {
    pub fn home(self) -> Url {
        self.base_url()
    }
    pub fn admin_urls(self) -> page::admin::Urls<'a> {
        page::admin::Urls::new(self.base_url().add_path_part(ADMIN))
    }
}

fn view(mdl: &Model) -> Node<Msg> {
    a![
        attrs!{ At::Href => Urls::new(&mdl.base_url).home() }
    ]
}