#![feature(proc_macro_hygiene, decl_macro)] extern crate rocket; extern crate typed_html; extern crate typed_html_macros; use rocket::http::{ContentType, Status}; use rocket::response::{Responder, Result}; use rocket::{get, routes, Request, Response}; use std::io::Cursor; use typed_html::types::LinkType; use typed_html::{dom::DOMTree, html, text}; struct Html(DOMTree); impl<'r> Responder<'r> for Html { fn respond_to(self, _request: &Request) -> Result<'r> { Ok(Response::build() .status(Status::Ok) .header(ContentType::HTML) .sized_body(Cursor::new(self.0.to_string())) .finalize()) } } #[get("/")] fn index() -> Html { Html(html!( "Hello Kitty!"

"Hello Kitty!"

"She is not a ""cat"". She is a ""human girl""."

"But how does she eat?"

{ (1..4).map(|i| { html!(

{ text!("{}. Ceci n'est pas une chatte.", i) }

) }) }

""

)) } fn main() { rocket::ignite().mount("/", routes![index]).launch(); }