v0.7.2 · released April 2026

Blazingly fast async
web framework for Rust

RustBlaze pairs a zero-cost async core with an ergonomic, type-safe routing API. Build production HTTP services that scale — without fighting the borrow checker.

# Add it to your project
$ cargo add rustblaze

use rustblaze::{App, get};

async fn hello() -> &'static str { "Hello from RustBlaze" }

#[rustblaze::main]
async fn main() {
    App::new()
        .route("/", get(hello))
        .listen("0.0.0.0:8080")
        .await;
}

Why RustBlaze

Everything you need to ship fast HTTP services, nothing you don't.

⚡ Zero-cost async

Built on Tokio with no runtime overhead. Handlers compile down to tight state machines.

🛡️ Type-safe routing

Extractors validated at compile time. If it builds, your request handling is sound.

🧩 Tower-compatible

Drop in any Tower middleware — tracing, rate-limiting, auth — with a single line.

📦 Tiny footprint

Under 600 KB stripped. Cold-starts in milliseconds — ideal for edge & serverless.

🔌 First-class WebSockets

Async streams, backpressure-aware, no extra crates required.

🧪 Test-friendly

In-process test client, no sockets needed. Assert on responses directly.

Quickstart

From zero to a running server in two commands.

# 1. create a project and add the dependency
$ cargo new my-api && cd my-api
$ cargo add rustblaze --features full

# 2. run it
$ cargo run
   Compiling my-api v0.1.0
    Running `target/debug/my-api`
  rustblaze: listening on http://0.0.0.0:8080

Examples

Composable, explicit, and easy to read.

JSON extractors

use rustblaze::{post, Json};

async fn create(Json(u): Json<User>)
    -> Json<User> {
    Json(db::insert(u).await)
}

Middleware & state

let app = App::new()
    .route("/me", get(profile))
    .layer(trace())
    .layer(cors())
    .with_state(pool);

Benchmarks

Single node, 64 connections, plaintext (TechEmpower-style).

1.42M
req/sec
38 µs
p99 latency
~580 KB
binary size
0
unsafe in core