Churust π
Churro + Rust β a backend web framework inspired by Ktor. Simple, secure, robust, and easy to learn.
Churust gives you Ktorβs developer experience in Rust: an application engine, a
routing DSL, an install(plugin) system, and a phased interceptor pipeline β
built on a battle-tested async stack (tokio + hyper + rustls). Churust owns
the ergonomic layer; it does not reinvent HTTP parsing or TLS.
Coming from Kotlin/Ktor? See From Ktor to Churust
for side-by-side examples (routes, install, JSON, auth, config, tests).
use churust::prelude::*; #[churust::main] async fn main() -> std::io::Result<()> { Churust::server() .port(8080) .routing(|r| { r.get("/", |_call: Call| async { "Hello from Churust π" }); r.get("/users/{id}", |Path(id): Path<u64>| async move { format!("user #{id}") }); }) .start() .await }
What you get
| Area | Highlights |
|---|---|
| Handlers | Call-style or typed extractors (Path, Query, Json, State, β¦) |
| Plugins | install(...) into a fixed phase order: Setup β Monitoring β Plugins β Call β Fallback |
| Security | Body limits, timeouts, panic isolation, security headers, opt-in TLS |
| Protocols | HTTP/1.1, HTTP/2, optional HTTP/3, WebSockets, static files |
| Ecosystem | Opt-in JSON, CORS, auth, rate limit, compression, templates, Redis, OpenAPI, client |
How this site is organized
| Section | Purpose |
|---|---|
| Getting started | Install, run your first server |
| From Ktor to Churust | Side-by-side Ktor (Kotlin) β Churust (Rust) |
| Fundamentals | Routing, extractors, plugins, config, tests |
| Plugins & features | One page per optional capability |
| Recipes | End-to-end examples from the repo |
| Reference | Matrices, config keys, security, non-goals |
| Community | Contributing and help channels |
Docs map
| Resource | Use it for |
|---|---|
| This guide | How to use Churust day to day |
| docs.rs/churust | Full API reference for types and traits |
| examples/ | Runnable apps (hello, api, chat, static) |
| README | Short pitch and install blurb |
Status
Published on crates.io. Pre-1.0: the API is settling rather than settled β expect breaking changes in minor releases until 1.0. Current series documented here: 0.3.
MSRV: Rust 1.96+.
Next step
β Quick start