#[macro_use] extern crate rocket; use rocket::response::content::RawHtml; use rocket::response::Redirect; type Session<'a> = rocket_session::Session<'a, Vec>; #[launch] fn rocket() -> _ { rocket::build() .attach(Session::fairing()) .mount("/", routes![index, add, remove]) } #[get("/")] fn index(session: Session) -> RawHtml { let mut page = String::new(); page.push_str( r#"

My Dogs

Add Dog:
"); RawHtml(page) } #[post("/add", data = "")] fn add(session: Session, dog: String) -> Redirect { session.tap(move |sess| { sess.push(dog); }); Redirect::found("/") } #[get("/remove/")] fn remove(session: Session, dog: usize) -> Redirect { session.tap(|sess| { if dog < sess.len() { sess.remove(dog); } }); Redirect::found("/") }