6 releases
0.3.2 | Aug 9, 2023 |
---|---|
0.3.1 | Aug 7, 2023 |
0.3.0 | Jul 31, 2023 |
0.2.1 | Jul 27, 2023 |
0.1.0 | Jul 2, 2023 |
#4 in #hypermedia
42 downloads per month
37KB
813 lines
HYRO
noun/ˈhɪr.oʊ/
- A : acronym for "Hypermedia Rust Orchestration"
B : a crate that extends Axum with new functionality, like rendering Jinja Templates on the server, bundling css, and a better developer experience.
C : a powerful HMR framework for hypermedia systems like HTMX.
D : the equivalent of Rails for nerds
Usage and Examples
- More in-depth examples can be found at examples/basic and examples/crud. Make sure you
cd
to the path containing the templates and style folders before running or you will get a file-not-found error!
Let's start with dependencies:
cargo new hyro-getting-started
cargo add hyro
cargo add axum
cargo add tokio -F full
mkdir templates
HYRO templates use Jinja2. Let's start with a basic one:
templates/hello.html.jinja2
<p>Hello, {{ name }}!</p>
Then we can set up our boilerplate:
src/main.rs
use std::borrow::Cow;
use axum::response::Html;
use axum::{routing, Router, Server};
use hyro::{context, RouterExt, Template};
#[tokio::main]
async fn main() {
let router = Router::new()
.route("/hello", routing::get(hello))
.into_service_with_hmr();
Server::from_tcp(hyro::bind("0.0.0.0:1380").await)).unwrap()
.serve(router)
.await
.unwrap();
}
async fn hello(template: Template) -> Html<Cow<'static, str>> {
template.render(context! {
name => "World",
})
}
Now if we navigate to 'localhost:1380/hello', we can read our message! If you're running in
debug mode, you can edit templates/hello.html.jinja2
and the HMR should kick in.
Dependencies
~21–34MB
~427K SLoC