mirror of
https://github.com/rwf2/Rocket.git
synced 2024-12-26 12:22:36 +00:00
4c6562cd29
This allows responses to be sent to the client even when data is only partially read, significantly improving the experience for the client from one with a "connection closed" error to one with a proper response. The consequence is a lifetime in 'Data'. Though other non-lifetime-introducing solutions exist, the introduction of a lifetime to 'Data' is a longstanding desire as it prevents smuggling 'Data' into a longer-lived context. Use of 'Data' in that context was unspecified with various runtime consequences. The addition of a lifetime bound by the request prevents this error statically. In summary, the changes are: * Clients receive responses even when data isn't fully read. * 'Data' becomes 'Data<'r>'. 'FromData' changes accordingly. * Route 'Outcome's are strictly tied to the request lifetime. Tangentially, the invalid length form field validation error message has improved to format length in byte units if it exceeds 1024. |
||
---|---|---|
.. | ||
src | ||
tests | ||
Cargo.toml | ||
README.md |
dyn_templates
This crate adds support for dynamic template rendering to Rocket. It
automatically discovers templates, provides a Responder
to render templates,
and automatically reloads templates when compiled in debug mode. At present, it
supports Handlebars and Tera.
Usage
-
Enable the
rocket_dyn_templates
feature corresponding to your templating engine(s) of choice:[dependencies.rocket_dyn_templates] version = "0.1.0-dev" features = ["handlebars", "tera"]
-
Write your template files in Handlebars (
.hbs
) and/or Tera (.tera
) in the configurabletemplate_dir
directory (default:{rocket_root}/templates
). -
Attach
Template::fairing()
and return aTemplate
usingTemplate::render()
, supplying the name of the template file minus the last two extensions:use rocket_dyn_templates::Template; #[launch] fn rocket() -> _ { rocket::build().attach(Template::fairing()) } #[get("/")] fn index() -> Template { Template::render("template-name", &context) }
See the crate docs for full details.