Fast, robust, flexible, lightweight web framework for Rust
Note: viz's main branch is currently preparing breaking changes. For the most recently released code, look to the 0.4.x branch.
-
Safety
#![forbid(unsafe_code)]
-
Lightweight
-
Robust
Routing
-
Handy
Extractors
-
Simple + Flexible
Handler
&Middleware
use std::{net::SocketAddr, sync::Arc};
use tokio::net::TcpListener;
use viz::{serve, Request, Result, Router, Tree};
async fn index(_: Request) -> Result<&'static str> {
Ok("Hello, Viz!")
}
#[tokio::main]
async fn main() -> Result<()> {
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
let listener = TcpListener::bind(addr).await?;
println!("listening on http://{addr}");
let app = Router::new().get("/", index);
let tree = Arc::new(Tree::from(app));
loop {
let (stream, addr) = listener.accept().await?;
let tree = tree.clone();
tokio::task::spawn(serve(stream, tree, Some(addr)));
}
}
More examples can be found here.
Open Viz.rs, select language or version.
This project is licensed under the MIT license.