rustapi-rs 0.1.397

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-grpc = { 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, optional = 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"] }

doc-comment = "0.3"

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



[features]

default = ["core"]



# Canonical core features

core = ["core-openapi", "core-tracing"]

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

core-tracing = ["rustapi-core/tracing"]

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

core-legacy-validator = ["dep:validator", "rustapi-core/legacy-validator"]

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

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

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

core-http3 = ["rustapi-core/http3"]

core-http3-dev = ["rustapi-core/http3-dev"]



# Canonical protocol features

protocol-toon = ["dep:rustapi-toon"]

protocol-ws = ["dep:rustapi-ws"]

protocol-view = ["dep:rustapi-view"]

protocol-grpc = ["dep:rustapi-grpc"]

protocol-http3 = ["core-http3"]

protocol-http3-dev = ["core-http3-dev"]

protocol-all = ["protocol-toon", "protocol-ws", "protocol-view", "protocol-grpc"]



# Canonical extras features

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

extras-all = [

    "extras-jwt",

    "extras-cors",

    "extras-rate-limit",

    "extras-config",

    "extras-sqlx",

    "extras-insight",

    "extras-timeout",

    "extras-guard",

    "extras-logging",

    "extras-circuit-breaker",

    "extras-retry",

    "extras-security-headers",

    "extras-api-key",

    "extras-cache",

    "extras-dedup",

    "extras-sanitization",

    "extras-otel",

    "extras-structured-logging",

    "extras-replay",

]



# Legacy feature aliases (kept for migration compatibility)

swagger-ui = ["core-openapi"]

tracing = ["core-tracing"]

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

legacy-validator = ["core-legacy-validator"]

compression = ["core-compression"]

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

cookies = ["core-cookies"]

http3 = ["protocol-http3"]

http3-dev = ["protocol-http3-dev"]

toon = ["protocol-toon"]

ws = ["protocol-ws"]

view = ["protocol-view"]

grpc = ["protocol-grpc"]

jwt = ["extras-jwt"]

cors = ["extras-cors"]

rate-limit = ["extras-rate-limit"]

config = ["extras-config"]

sqlx = ["extras-sqlx"]

insight = ["extras-insight"]

timeout = ["extras-timeout"]

guard = ["extras-guard"]

logging = ["extras-logging"]

circuit-breaker = ["extras-circuit-breaker"]

retry = ["extras-retry"]

security-headers = ["extras-security-headers"]

api-key = ["extras-api-key"]

cache = ["extras-cache"]

dedup = ["extras-dedup"]

sanitization = ["extras-sanitization"]

otel = ["extras-otel"]

structured-logging = ["extras-structured-logging"]

replay = ["extras-replay"]

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



# Canonical aggregate

full = ["core", "protocol-all", "extras-all", "core-legacy-validator"]