+ New
40 |├── .gitignore ├── .prettierrc.json ├── examples ├── basic │ ├── templates │ │ ├── splash.html.jinja2 │ │ ├── hello.html.jinja2 │ │ ├── navbar.html.jinja2 │ │ └── index.html.jinja2 │ ├── Cargo.toml │ ├── style │ │ ├── .main.css │ │ └── header.css │ └── src │ │ └── main.rs ├── crud │ ├── migrations │ │ └── 20230807135240_todos.sql │ ├── assets │ │ ├── trash.svg │ │ └── edit.svg │ ├── README.md │ ├── Cargo.toml │ ├── templates │ │ ├── todo-edit.html.j2 │ │ ├── todo.html.j2 │ │ └── index.html.j2 │ └── src │ │ └── main.rs └── basic-trillium │ ├── Cargo.toml │ ├── templates │ └── index.html.j2 │ └── src │ └── main.rs ├── benches ├── templates │ ├── form_and_context.html.jinja2 │ └── plain.html.jinja2 └── render.rs ├── .cargo └── config.toml ├── src ├── runtime │ ├── mod.rs │ ├── runtime_tokio.rs │ └── runtime_smol.rs ├── log.rs ├── framework │ ├── mod.rs │ ├── framework_trillium.rs │ └── framework_axum.rs ├── config.rs ├── hmr.js ├── style.rs ├── template.rs ├── lib.rs ├── render.rs └── hmr.rs ├── assets ├── hyro-dark.svg └── hyro-light.svg ├── .vscode └── settings.json ├── README.md ├── Cargo.toml ├── CHANGELOG.md └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | **/*.db 3 | perf.data* 4 | flamegraph.svg -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 2, 3 | "useTabs": true 4 | } 5 | -------------------------------------------------------------------------------- /examples/basic/templates/splash.html.jinja2: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/basic/templates/hello.html.jinja2: -------------------------------------------------------------------------------- 1 |
Hello, {{ form.name }}! This is HMR!
-------------------------------------------------------------------------------- /benches/templates/form_and_context.html.jinja2: -------------------------------------------------------------------------------- 1 |?name=<your name here> to the URL!+ New
40 |Hello, {{ name }}!
38 | ``` 39 | 40 | Then we can set up our boilerplate: 41 | 42 | `src/main.rs` 43 | 44 | ```rust 45 | use std::borrow::Cow; 46 | 47 | use axum::response::Html; 48 | use axum::{routing, Router, Server}; 49 | use hyro::prelude::*; 50 | use hyro::{context, Template}; 51 | 52 | #[tokio::main] 53 | async fn main() { 54 | let router = Router::new() 55 | .route("/hello", routing::get(hello)) 56 | .into_service_with_hmr(); 57 | 58 | Server::from_tcp(hyro::bind("0.0.0.0:1380"))).unwrap() 59 | .serve(router) 60 | .await 61 | .unwrap(); 62 | } 63 | 64 | async fn hello(template: Template) -> Html3 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce nec lacus in dui interdum interdum et 4 | vitae 5 | lorem. Curabitur eu quam faucibus, tristique ipsum quis, pellentesque mauris. Aenean id urna eget quam 6 | porttitor 7 | tincidunt. Aliquam at leo eu velit sagittis condimentum. Mauris lacus nibh, varius eu purus id, 8 | tincidunt 9 | viverra nisl. Nunc non enim nec ligula gravida efficitur. Proin vitae porta sem, eget finibus neque. 10 | Aliquam 11 | consectetur massa leo, ac vehicula metus lacinia eu. Donec sollicitudin dui leo. Mauris ut nisl nec 12 | lectus 13 | placerat eleifend. Quisque metus magna, vestibulum eget sapien at, pretium laoreet nibh. Duis rhoncus, 14 | dolor ut 15 | sodales lacinia, arcu dui auctor enim, vitae fermentum magna nulla ac nisi. Donec lobortis ante vel 16 | massa congue 17 | pharetra. Vestibulum vestibulum luctus lectus et ultricies. Etiam finibus accumsan faucibus. Duis 18 | sollicitudin 19 | sapien vel lectus pharetra, sit amet volutpat arcu malesuada. 20 |
21 |22 | Phasellus augue elit, fermentum in metus eget, aliquet ultricies leo. Suspendisse tincidunt porta dui ut 23 | ultrices. Ut tortor urna, semper et elementum vel, pellentesque a nibh. In imperdiet consequat elit, 24 | eget mollis 25 | quam lacinia ac. Pellentesque vulputate cursus facilisis. Vestibulum pretium turpis eu massa mattis 26 | tempor. 27 | Vestibulum mollis euismod risus. Nunc rhoncus sapien a nisl tincidunt laoreet. Ut placerat consectetur 28 | bibendum. 29 | Nullam porttitor velit erat, id vehicula nisi aliquam at. Vivamus nec congue lectus. 30 |
31 |32 | Sed suscipit, dui eu aliquet dignissim, sapien dui fringilla quam, id suscipit diam velit vitae ligula. 33 | Mauris 34 | bibendum cursus consequat. Quisque ac turpis elit. Nulla lacinia vulputate elit at eleifend. Aenean 35 | risus 36 | mauris, accumsan at bibendum non, semper nec erat. Fusce hendrerit condimentum felis, vel pretium dolor. 37 | Nullam 38 | fermentum tempor ipsum quis eleifend. 39 |
40 |41 | Integer tempus lacus tortor, at tempor dui finibus vitae. Nunc tincidunt elit a velit aliquet, vitae 42 | scelerisque 43 | leo venenatis. Curabitur nunc diam, eleifend pretium massa nec, vehicula blandit nibh. Curabitur 44 | elementum 45 | fringilla erat, vitae mollis est blandit et. Nunc aliquet ligula ex, ut fermentum nulla volutpat in. Nam 46 | faucibus fermentum vestibulum. Curabitur vitae augue tortor. Maecenas egestas sapien at lacus tincidunt, 47 | in 48 | finibus felis egestas. Sed egestas posuere venenatis. Nullam in nisl at risus aliquam condimentum. Morbi 49 | tincidunt nulla id felis volutpat feugiat. 50 |
51 |52 | Praesent feugiat ligula eros, eu vehicula quam ultricies non. Donec vulputate lobortis mi, eget faucibus 53 | est 54 | fermentum a. Vestibulum eu hendrerit quam, condimentum aliquam dolor. Phasellus sodales, augue at 55 | imperdiet 56 | porttitor, tellus mi lacinia velit, sed semper nisi diam id nisi. Suspendisse vel euismod ipsum. Etiam 57 | velit 58 | dolor, viverra nec ullamcorper quis, molestie in massa. Ut eget quam non nibh blandit posuere nec sit 59 | amet leo. 60 | Donec sem odio, mollis ac ex id, tempus venenatis lorem. 61 |
62 |33 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce nec lacus in dui interdum interdum et 34 | vitae 35 | lorem. Curabitur eu quam faucibus, tristique ipsum quis, pellentesque mauris. Aenean id urna eget quam 36 | porttitor 37 | tincidunt. Aliquam at leo eu velit sagittis condimentum. Mauris lacus nibh, varius eu purus id, 38 | tincidunt 39 | viverra nisl. Nunc non enim nec ligula gravida efficitur. Proin vitae porta sem, eget finibus neque. 40 | Aliquam 41 | consectetur massa leo, ac vehicula metus lacinia eu. Donec sollicitudin dui leo. Mauris ut nisl nec 42 | lectus 43 | placerat eleifend. Quisque metus magna, vestibulum eget sapien at, pretium laoreet nibh. Duis rhoncus, 44 | dolor ut 45 | sodales lacinia, arcu dui auctor enim, vitae fermentum magna nulla ac nisi. Donec lobortis ante vel 46 | massa congue 47 | pharetra. Vestibulum vestibulum luctus lectus et ultricies. Etiam finibus accumsan faucibus. Duis 48 | sollicitudin 49 | sapien vel lectus pharetra, sit amet volutpat arcu malesuada. 50 |
51 |52 | Phasellus augue elit, fermentum in metus eget, aliquet ultricies leo. Suspendisse tincidunt porta dui ut 53 | ultrices. Ut tortor urna, semper et elementum vel, pellentesque a nibh. In imperdiet consequat elit, 54 | eget mollis 55 | quam lacinia ac. Pellentesque vulputate cursus facilisis. Vestibulum pretium turpis eu massa mattis 56 | tempor. 57 | Vestibulum mollis euismod risus. Nunc rhoncus sapien a nisl tincidunt laoreet. Ut placerat consectetur 58 | bibendum. 59 | Nullam porttitor velit erat, id vehicula nisi aliquam at. Vivamus nec congue lectus. 60 |
61 |62 | Sed suscipit, dui eu aliquet dignissim, sapien dui fringilla quam, id suscipit diam velit vitae ligula. 63 | Mauris 64 | bibendum cursus consequat. Quisque ac turpis elit. Nulla lacinia vulputate elit at eleifend. Aenean 65 | risus 66 | mauris, accumsan at bibendum non, semper nec erat. Fusce hendrerit condimentum felis, vel pretium dolor. 67 | Nullam 68 | fermentum tempor ipsum quis eleifend. 69 |
70 |71 | Integer tempus lacus tortor, at tempor dui finibus vitae. Nunc tincidunt elit a velit aliquet, vitae 72 | scelerisque 73 | leo venenatis. Curabitur nunc diam, eleifend pretium massa nec, vehicula blandit nibh. Curabitur 74 | elementum 75 | fringilla erat, vitae mollis est blandit et. Nunc aliquet ligula ex, ut fermentum nulla volutpat in. Nam 76 | faucibus fermentum vestibulum. Curabitur vitae augue tortor. Maecenas egestas sapien at lacus tincidunt, 77 | in 78 | finibus felis egestas. Sed egestas posuere venenatis. Nullam in nisl at risus aliquam condimentum. Morbi 79 | tincidunt nulla id felis volutpat feugiat. 80 |
81 |82 | Praesent feugiat ligula eros, eu vehicula quam ultricies non. Donec vulputate lobortis mi, eget faucibus 83 | est 84 | fermentum a. Vestibulum eu hendrerit quam, condimentum aliquam dolor. Phasellus sodales, augue at 85 | imperdiet 86 | porttitor, tellus mi lacinia velit, sed semper nisi diam id nisi. Suspendisse vel euismod ipsum. Etiam 87 | velit 88 | dolor, viverra nec ullamcorper quis, molestie in massa. Ut eget quam non nibh blandit posuere nec sit 89 | amet leo. 90 | Donec sem odio, mollis ac ex id, tempus venenatis lorem. 91 |
92 |