rustapi-rs 0.1.207

A FastAPI-like web framework for Rust - DX-first, type-safe, batteries included
Documentation
[package]

name = "rustapi-rs"

description = "A FastAPI-like web framework for Rust - DX-first, type-safe, batteries included"

documentation = "https://docs.rs/rustapi-rs"

version.workspace = true

edition.workspace = true

authors.workspace = true

license.workspace = true

repository.workspace = true

keywords.workspace = true

categories.workspace = true

rust-version.workspace = true

readme = "README.md"



[dependencies]

rustapi-core = { workspace = true, default-features = false }

rustapi-macros = { workspace = true }

rustapi-extras = { workspace = true, optional = true }

rustapi-toon = { workspace = true, optional = true }

rustapi-ws = { workspace = true, optional = true }

rustapi-view = { workspace = true, optional = true }

rustapi-validate = { workspace = true }

async-trait = { workspace = true }



# Re-exports for user convenience

tokio = { workspace = true }

serde = { workspace = true }

serde_json = { workspace = true }

tracing = { workspace = true }

validator = { workspace = true }

rustapi-openapi = { workspace = true, default-features = false }



[dev-dependencies]

rustapi-core = { workspace = true }

rustapi-macros = { workspace = true }

tokio = { workspace = true, features = ["macros", "rt-multi-thread"] }

utoipa = { workspace = true }

doc-comment = "0.3"

uuid = { workspace = true, features = ["serde", "v4"] }



[features]

default = ["swagger-ui", "tracing"]

swagger-ui = ["rustapi-core/swagger-ui", "rustapi-openapi/swagger-ui"]



# Performance features

simd-json = ["rustapi-core/simd-json"]

tracing = ["rustapi-core/tracing"]



# Compression middleware

compression = ["rustapi-core/compression"]

compression-brotli = ["rustapi-core/compression-brotli"]



# Security and utility features (from rustapi-extras)

jwt = ["dep:rustapi-extras", "rustapi-extras/jwt"]

cors = ["dep:rustapi-extras", "rustapi-extras/cors"]

rate-limit = ["dep:rustapi-extras", "rustapi-extras/rate-limit"]

config = ["dep:rustapi-extras", "rustapi-extras/config"]

cookies = ["dep:rustapi-extras", "rustapi-extras/cookies", "rustapi-core/cookies"]

sqlx = ["dep:rustapi-extras", "rustapi-extras/sqlx"]

insight = ["dep:rustapi-extras", "rustapi-extras/insight"]



# TOON format support

toon = ["dep:rustapi-toon"]



# WebSocket support

ws = ["dep:rustapi-ws"]



# Template engine support

view = ["dep:rustapi-view"]



# New Phase 11 & Observability features

timeout = ["dep:rustapi-extras", "rustapi-extras/timeout"]

guard = ["dep:rustapi-extras", "rustapi-extras/guard"]

logging = ["dep:rustapi-extras", "rustapi-extras/logging"]

circuit-breaker = ["dep:rustapi-extras", "rustapi-extras/circuit-breaker"]

retry = ["dep:rustapi-extras", "rustapi-extras/retry"]

security-headers = ["dep:rustapi-extras", "rustapi-extras/security-headers"]

api-key = ["dep:rustapi-extras", "rustapi-extras/api-key"]

cache = ["dep:rustapi-extras", "rustapi-extras/cache"]

dedup = ["dep:rustapi-extras", "rustapi-extras/dedup"]

sanitization = ["dep:rustapi-extras", "rustapi-extras/sanitization"]

otel = ["dep:rustapi-extras", "rustapi-extras/otel"]

structured-logging = ["dep:rustapi-extras", "rustapi-extras/structured-logging"]



# Meta features

extras = ["jwt", "cors", "rate-limit"]

full = ["extras", "config", "cookies", "sqlx", "toon", "insight", "compression", "ws", "view", "timeout", "guard", "logging", "circuit-breaker", "security-headers", "api-key", "cache", "dedup", "sanitization", "otel", "structured-logging"]