Module macros

Source
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§

CompiledRoute
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
QueryValidator
Compile-time query string validation
RouteValidator
Compile-time route validation

Traits§

JsonExtractor
JSON body extraction with compile-time validation
PathExtractor
Compile-time path parameter extraction
QueryExtractor
Query parameter extraction with compile-time validation

Functions§

extract_params
Compile-time parameter extraction function