[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", "no-std"]
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.2"
[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"