Expand description
§Torch Compile-Time Route Registration
This module provides compile-time route registration using procedural macros. This addresses the Reddit feedback about leveraging Rust’s fantastic compiler for compile-time validation and optimization.
§Features
- Compile-time route validation: Routes are validated at compile time
- Type-safe parameter extraction: Query parameters and path parameters are type-checked
- Zero-cost abstractions: No runtime overhead for route registration
- IDE support: Full autocomplete and error checking
§Example
use torch_web::{routes, get, post, Path, Query};
#[derive(Deserialize)]
struct UserQuery {
page: Option<u32>,
limit: Option<u32>,
}
routes! {
// GET /users/{id}
#[get("/users/{id}")]
async fn get_user(Path(id): Path<u32>) -> Response {
Response::ok().json(format!("User {}", id))
}
// GET /users?page=1&limit=10
#[get("/users")]
async fn list_users(Query(params): Query<UserQuery>) -> Response {
let page = params.page.unwrap_or(1);
let limit = params.limit.unwrap_or(10);
Response::ok().json(format!("Page {} with {} items", page, limit))
}
// POST /users
#[post("/users")]
async fn create_user(Json(user): Json<CreateUserRequest>) -> Response {
// Create user logic
Response::created().json("User created")
}
}
Structs§
- Compiled
Route - Example of compile-time route generation
- Json
- JSON body wrapper for compile-time extraction
- Path
- Path parameter wrapper for compile-time extraction
- Query
- Query parameter wrapper for compile-time extraction
- Query
Validator - Compile-time query string validation
- Route
Validator - Compile-time route validation
Traits§
- Json
Extractor - JSON body extraction with compile-time validation
- Path
Extractor - Compile-time path parameter extraction
- Query
Extractor - Query parameter extraction with compile-time validation
Functions§
- extract_
params - Compile-time parameter extraction function