finds.dev← search

// the find

salvo-rs/salvo

★ 4,396 · Rust · Apache-2.0 · updated Jul 2026

A powerful web framework built with a simplified design.

Salvo is a Rust async web framework built on Hyper and Tokio that tries to make handler and middleware authoring feel uniform — both are just functions annotated with `#[handler]`. It targets developers who want something with more batteries included than Axum but less ceremony than Actix-web, with HTTP/1, HTTP/2, HTTP/3, ACME, WebSocket, and OpenAPI all available as feature flags.

The handler model is genuinely clean: `#[handler]` lets you declare only the parameters you actually need (request, response, depot, or none), and the macro figures out the rest via proc-macro inspection — no trait gymnastics required. OpenAPI integration is unusually good: swapping `#[handler]` for `#[endpoint]` auto-generates schema from types and doc comments, with Swagger UI, Redoc, RapiDoc, and Scalar all bundled. The crate is well-decomposed — ACME, CORS, CSRF, rate limiting, JWT auth, and proxy are separate optional crates, so you only pull what you use. The `unsafe-forbidden` badge is backed by a real `#![forbid(unsafe_code)]` in the core crate, which is meaningful for a low-level networking library.

The community is small — 4400 stars and 271 forks is thin compared to Axum's 20k+, which means fewer third-party middleware crates, fewer Stack Overflow answers, and higher risk that a niche bug sits unresolved. The `Depot` type-map for passing data between handlers is ergonomic on the surface but type-unsafe at runtime: you insert by type key and get `None` if it's missing, which is a class of bugs that Axum's `Extension` and especially its `State` extractor eliminated. HTTP/3 support via Quinn is there, but it's not widely battle-tested in production Rust services yet, so advertising it as a first-class feature oversells the maturity. Documentation quality drops off sharply past the quick-start examples — the API docs exist, but complex use cases (streaming responses, multipart uploads at scale, connection lifecycle hooks) require reading source code.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →