masterror 0.27.1

Application error types and response mapping
Documentation
[build-dependencies.serde]
features = ["derive"]
version = "1"

[build-dependencies.toml]
version = "0.9"

[dependencies.actix-web]
default-features = false
features = ["macros"]
optional = true
version = "4"

[dependencies.axum]
default-features = false
features = ["json", "multipart"]
optional = true
version = "0.8"

[dependencies.config]
optional = true
version = "0.15"

[dependencies.http]
version = "1"

[dependencies.init-data-rs]
optional = true
version = "0.1"

[dependencies.itoa]
version = "1"

[dependencies.js-sys]
optional = true
version = "0.3"

[dependencies.log]
optional = true
version = "0.4"

[dependencies.log-mdc]
optional = true
version = "0.1"

[dependencies.masterror-derive]
version = "0.11"

[dependencies.masterror-template]
version = "0.4"

[dependencies.metrics]
optional = true
version = "0.24"

[dependencies.owo-colors]
default-features = false
features = ["supports-colors"]
optional = true
version = "4"

[dependencies.redis]
default-features = false
optional = true
version = "1"

[dependencies.reqwest]
default-features = false
optional = true
version = "0.12"

[dependencies.ryu]
version = "1"

[dependencies.serde]
default-features = false
features = ["derive", "alloc"]
version = "1"

[dependencies.serde-wasm-bindgen]
optional = true
version = "0.6"

[dependencies.serde_json]
default-features = false
features = ["std"]
optional = true
version = "1"

[dependencies.sha2]
version = "0.10"

[dependencies.sqlx]
default-features = false
features = ["migrate"]
optional = true
version = "0.8"

[dependencies.sqlx-core]
default-features = false
optional = true
version = "0.8"

[dependencies.teloxide-core]
default-features = false
optional = true
version = "0.13"

[dependencies.tokio]
features = ["time"]
optional = true
version = "1"

[dependencies.tonic]
optional = true
version = "0.14"

[dependencies.tracing]
default-features = false
features = ["attributes", "std"]
optional = true
version = "0.1"

[dependencies.utoipa]
optional = true
version = "5.4"

[dependencies.uuid]
default-features = false
version = "1"

[dependencies.validator]
features = ["derive"]
optional = true
version = "0.20"

[dependencies.wasm-bindgen]
optional = true
version = "0.2"

[dev-dependencies.anyhow]
default-features = false
features = ["std"]
version = "1"

[dev-dependencies.criterion]
version = "0.8"

[dev-dependencies.serde_json]
version = "1"

[dev-dependencies.tempfile]
version = "3"

[dev-dependencies.thiserror]
version = "2.0"

[dev-dependencies.tokio]
default-features = false
features = ["macros", "rt-multi-thread", "net", "time"]
version = "1"

[dev-dependencies.toml]
version = "0.9"

[dev-dependencies.tracing-subscriber]
features = ["registry"]
version = "0.3"

[dev-dependencies.trybuild]
version = "1"

[features]
actix = ["dep:actix-web", "dep:serde_json", "std"]
axum = ["dep:axum", "dep:serde_json", "std"]
backtrace = ["std"]
benchmarks = ["std"]
colored = ["dep:owo-colors", "std"]
config = ["dep:config", "std"]
default = ["std"]
frontend = ["dep:wasm-bindgen", "dep:js-sys", "dep:serde-wasm-bindgen", "std"]
init-data = ["dep:init-data-rs", "std"]
metrics = ["dep:metrics", "std"]
multipart = ["axum", "std"]
openapi = ["dep:utoipa", "std"]
redis = ["dep:redis", "std"]
reqwest = ["dep:reqwest", "std"]
serde_json = ["dep:serde_json", "std"]
sqlx = ["dep:sqlx-core"]
sqlx-migrate = ["dep:sqlx"]
std = ["uuid/std", "serde/std"]
teloxide = ["dep:teloxide-core", "std"]
tokio = ["dep:tokio", "std"]
tonic = ["dep:tonic", "std"]
tracing = ["dep:tracing", "dep:log", "dep:log-mdc", "std"]
turnkey = ["std"]
validator = ["dep:validator", "std"]

[lib]
bench = false
crate-type = ["cdylib", "rlib"]
name = "masterror"
path = "src/lib.rs"

[package]
autobenches = false
autobins = false
autoexamples = false
autolib = false
autotests = false
build = "build.rs"
categories = ["rust-patterns", "web-programming"]
description = "Application error types and response mapping"
documentation = "https://docs.rs/masterror"
edition = "2024"
include = ["Cargo.toml", "Cargo.lock", "build.rs", "src/**", "tests/**", "README.md", "README.ru.md", "README.ko.md", "README.template.md", "CHANGELOG.md", "LICENSE", "Makefile.toml", "deny.toml", "idea.md", "target.md", "build/**", "masterror-derive/**", "masterror-template/**", ".cargo/audit.toml", ".cargo/config.toml"]
keywords = ["error", "api", "framework"]
license = "MIT"
name = "masterror"
readme = "README.md"
repository = "https://github.com/RAprogramm/masterror"
rust-version = "1.92"
version = "0.27.1"

[package.metadata.masterror.readme]
conversion_lines = ["`std::io::Error` → Internal", "`String` → BadRequest", "`sqlx::Error` → NotFound/Database", "`redis::RedisError` → Cache", "`reqwest::Error` → Timeout/Network/ExternalApi", "`axum::extract::multipart::MultipartError` → BadRequest", "`validator::ValidationErrors` → Validation", "`config::ConfigError` → Config", "`tokio::time::error::Elapsed` → Timeout", "`teloxide_core::RequestError` → RateLimited/Network/ExternalApi/Deserialization/Internal", "`init_data_rs::InitDataError` → TelegramAuth"]
feature_order = ["std", "axum", "actix", "openapi", "serde_json", "tracing", "metrics", "backtrace", "colored", "sqlx", "sqlx-migrate", "reqwest", "redis", "validator", "config", "tokio", "multipart", "teloxide", "init-data", "tonic", "frontend", "turnkey", "benchmarks"]
feature_snippet_group = 4

[package.metadata.masterror.readme.features.actix]
description = "Actix Web ResponseError and Responder implementations"

[package.metadata.masterror.readme.features.axum]
description = "IntoResponse integration with structured JSON bodies"

[package.metadata.masterror.readme.features.backtrace]
description = "Capture lazy `Backtrace` snapshots when telemetry is flushed"

[package.metadata.masterror.readme.features.benchmarks]
description = "Enable Criterion benchmarks and CI baseline tooling"
extra = ["Primarily used for local profiling and continuous benchmarking runs"]

[package.metadata.masterror.readme.features.colored]
description = "Optional colored terminal output with automatic TTY detection"

[package.metadata.masterror.readme.features.config]
description = "Propagate config::ConfigError as configuration issues"

[package.metadata.masterror.readme.features.frontend]
description = "Log to the browser console and convert to JsValue on WASM"

[package.metadata.masterror.readme.features.init-data]
description = "Convert init-data-rs validation errors for Telegram Mini Apps"

[package.metadata.masterror.readme.features.metrics]
description = "Increment `error_total{code,category}` counter for each AppError"

[package.metadata.masterror.readme.features.multipart]
description = "Handle axum multipart extraction errors"

[package.metadata.masterror.readme.features.openapi]
description = "Generate utoipa OpenAPI schema for ErrorResponse"

[package.metadata.masterror.readme.features.redis]
description = "Map redis::RedisError into cache-aware AppError"

[package.metadata.masterror.readme.features.reqwest]
description = "Classify reqwest::Error as timeout/network/external API"

[package.metadata.masterror.readme.features.serde_json]
description = "Attach structured JSON details to AppError"

[package.metadata.masterror.readme.features.sqlx]
description = "Classify sqlx_core::Error variants into AppError kinds"

[package.metadata.masterror.readme.features.sqlx-migrate]
description = "Map sqlx::migrate::MigrateError into AppError (Database)"

[package.metadata.masterror.readme.features.std]
description = "Enable std support (default); required for runtime integrations"

[package.metadata.masterror.readme.features.teloxide]
description = "Convert teloxide_core::RequestError into domain errors"

[package.metadata.masterror.readme.features.tokio]
description = "Classify tokio::time::error::Elapsed as timeout"

[package.metadata.masterror.readme.features.tonic]
description = "Convert AppError into tonic::Status with redaction"

[package.metadata.masterror.readme.features.tracing]
description = "Emit structured tracing events when errors are constructed"

[package.metadata.masterror.readme.features.turnkey]
description = "Ship Turnkey-specific error taxonomy and conversions"

[package.metadata.masterror.readme.features.validator]
description = "Convert validator::ValidationErrors into validation failures"

[[test]]
name = "app_code_reuse"
path = "tests/app_code_reuse.rs"

[[test]]
name = "build_test"
path = "tests/build_test.rs"

[[test]]
name = "enforce_app_result_alias"
path = "tests/enforce_app_result_alias.rs"

[[test]]
name = "ensure_fail"
path = "tests/ensure_fail.rs"

[[test]]
name = "error_derive"
path = "tests/error_derive.rs"

[[test]]
name = "error_derive_from_trybuild"
path = "tests/error_derive_from_trybuild.rs"

[[test]]
name = "masterror_macro"
path = "tests/masterror_macro.rs"

[[test]]
name = "readme_sync"
path = "tests/readme_sync.rs"

[[test]]
name = "rust_2024_edition"
path = "tests/rust_2024_edition.rs"