| Crates.io | tako-rs |
| lib.rs | tako-rs |
| version | 0.3.2 |
| created_at | 2025-06-21 22:07:51.652951+00 |
| updated_at | 2025-08-10 23:07:53.913785+00 |
| description | Tako is a lightweight async web framework for Rust. |
| homepage | https://github.com/rust-dd/tako |
| repository | https://github.com/rust-dd/tako |
| max_upload_size | |
| id | 1721134 |
| size | 393,218 |
Tako ("octopus" in Japanese) is a pragmatic, ergonomic and extensible async web framework for Rust. It aims to keep the mental model small while giving you firstâclass performance and modern conveniences outâofâtheâbox.
â ïž Earlyâstage software: Tako is still under active development; use with caution and expect breaking changes.
Stream responses.unsafe globals.hyper & tokio for minimal overhead and async performance with native HTTP/2 & TLS support.API Documentation is mostly generated using AI from the source code. Please note that the documentation is still a work in progress and may contain errors or inaccuracies.
MSRV 1.87.0
+---------------------------+------------------+------------------+---------------+
| Framework đŠ | Requests/sec | Avg Latency | Transfer/sec |
+---------------------------+------------------+------------------+---------------+
| Tako (not taco! đź) | ~148,800 | ~649 ”s | ~12.6 MB/s |
| Tako Jemalloc | ~158,059 | ~592 ”s | ~13.3 MB/s |
| Axum | ~153,500 | ~607 ”s | ~19 MB/s |
| Actix | ~126,300 | ~860 ”s | ~15.7 MB/s |
+---------------------------+------------------+------------------+---------------+
đ Command used: `wrk -t4 -c100 -d30s http://127.0.0.1:8080/`
Add Tako to your Cargo.toml:
[dependencies]
tako-rs = "*"
Spin up a "Hello, World!" server in a handful of lines:
use anyhow::Result;
use tako::{
responder::Responder,
router::Router,
types::Request,
Method,
};
use tokio::net::TcpListener;
async fn hello_world(_: Request) -> impl Responder {
"Hello, World!".into_response()
}
#[tokio::main]
async fn main() -> Result<()> {
// Bind a local TCP listener
let listener = TcpListener::bind("127.0.0.1:8080").await?;
// Declare routes
let mut router = Router::new();
router.route(Method::GET, "/", hello_world);
println!("Server running at http://127.0.0.1:8080");
// Launch the server
tako::serve(listener, router).await;
Ok(())
}
MIT â see LICENSE for details.
Made with â€ïž & đŠ by the Tako contributors.