[package]
edition = "2024"
rust-version = "1.93"
name = "masterror"
version = "0.27.3"
build = "build.rs"
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",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Application error types and response mapping"
documentation = "https://docs.rs/masterror"
readme = "README.md"
keywords = [
"error",
"api",
"framework",
"error-handling",
]
categories = [
"rust-patterns",
"web-programming",
"no-std",
]
license = "MIT"
repository = "https://github.com/RAprogramm/masterror"
[package.metadata.masterror.readme]
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
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",
]
[package.metadata.masterror.readme.features.axum]
description = "IntoResponse integration with structured JSON bodies"
[package.metadata.masterror.readme.features.actix]
description = "Actix Web ResponseError and Responder implementations"
[package.metadata.masterror.readme.features.std]
description = "Enable std support (default); required for runtime integrations"
[package.metadata.masterror.readme.features.openapi]
description = "Generate utoipa OpenAPI schema for ErrorResponse"
[package.metadata.masterror.readme.features.serde_json]
description = "Attach structured JSON details to AppError"
[package.metadata.masterror.readme.features.tracing]
description = "Emit structured tracing events when errors are constructed"
[package.metadata.masterror.readme.features.metrics]
description = "Increment `error_total{code,category}` counter for each AppError"
[package.metadata.masterror.readme.features.backtrace]
description = "Capture lazy `Backtrace` snapshots when telemetry is flushed"
[package.metadata.masterror.readme.features.colored]
description = "Optional colored terminal output with automatic TTY detection"
[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.reqwest]
description = "Classify reqwest::Error as timeout/network/external API"
[package.metadata.masterror.readme.features.redis]
description = "Map redis::RedisError into cache-aware AppError"
[package.metadata.masterror.readme.features.validator]
description = "Convert validator::ValidationErrors into validation failures"
[package.metadata.masterror.readme.features.config]
description = "Propagate config::ConfigError as configuration issues"
[package.metadata.masterror.readme.features.multipart]
description = "Handle axum multipart extraction errors"
[package.metadata.masterror.readme.features.tokio]
description = "Classify tokio::time::error::Elapsed as timeout"
[package.metadata.masterror.readme.features.teloxide]
description = "Convert teloxide_core::RequestError into domain errors"
[package.metadata.masterror.readme.features.init-data]
description = "Convert init-data-rs validation errors for Telegram Mini Apps"
[package.metadata.masterror.readme.features.tonic]
description = "Convert AppError into tonic::Status with redaction"
[package.metadata.masterror.readme.features.frontend]
description = "Log to the browser console and convert to JsValue on WASM"
[package.metadata.masterror.readme.features.turnkey]
description = "Ship Turnkey-specific error taxonomy and conversions"
[package.metadata.masterror.readme.features.benchmarks]
description = "Enable Criterion benchmarks and CI baseline tooling"
extra = ["Primarily used for local profiling and continuous benchmarking runs"]
[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]
name = "masterror"
crate-type = [
"cdylib",
"rlib",
]
path = "src/lib.rs"
bench = false
[[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"
[dependencies.actix-web]
version = "4"
features = ["macros"]
optional = true
default-features = false
[dependencies.axum]
version = "0.8"
features = [
"json",
"multipart",
]
optional = true
default-features = false
[dependencies.config]
version = "0.15"
optional = true
[dependencies.http]
version = "1"
[dependencies.init-data-rs]
version = "0.1"
optional = true
[dependencies.itoa]
version = "1"
[dependencies.js-sys]
version = "0.3"
optional = true
[dependencies.log]
version = "0.4"
optional = true
[dependencies.log-mdc]
version = "0.1"
optional = true
[dependencies.masterror-derive]
version = "0.11"
[dependencies.masterror-template]
version = "0.4"
[dependencies.metrics]
version = "0.24"
optional = true
[dependencies.owo-colors]
version = "4"
features = ["supports-colors"]
optional = true
default-features = false
[dependencies.redis]
version = "1"
optional = true
default-features = false
[dependencies.reqwest]
version = "0.13"
optional = true
default-features = false
[dependencies.ryu]
version = "1"
[dependencies.serde]
version = "1"
features = [
"derive",
"alloc",
]
default-features = false
[dependencies.serde-wasm-bindgen]
version = "0.6"
optional = true
[dependencies.serde_json]
version = "1"
features = ["std"]
optional = true
default-features = false
[dependencies.sha2]
version = "0.10"
[dependencies.sqlx]
version = "0.8"
features = ["migrate"]
optional = true
default-features = false
[dependencies.sqlx-core]
version = "0.8"
optional = true
default-features = false
[dependencies.teloxide-core]
version = "0.13"
optional = true
default-features = false
[dependencies.tokio]
version = "1"
features = ["time"]
optional = true
[dependencies.tonic]
version = "0.14"
optional = true
[dependencies.tracing]
version = "0.1"
features = [
"attributes",
"std",
]
optional = true
default-features = false
[dependencies.utoipa]
version = "5.4"
optional = true
[dependencies.uuid]
version = "1"
default-features = false
[dependencies.validator]
version = "0.20"
features = ["derive"]
optional = true
[dependencies.wasm-bindgen]
version = "0.2"
optional = true
[dev-dependencies.anyhow]
version = "1"
features = ["std"]
default-features = false
[dev-dependencies.criterion]
version = "0.8"
[dev-dependencies.reqwest-012]
version = "0.12"
features = ["rustls-tls"]
default-features = false
package = "reqwest"
[dev-dependencies.serde_json]
version = "1"
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.thiserror]
version = "2.0"
[dev-dependencies.tokio]
version = "1"
features = [
"macros",
"rt-multi-thread",
"net",
"time",
]
default-features = false
[dev-dependencies.toml]
version = "1"
[dev-dependencies.tracing-subscriber]
version = "0.3"
features = ["registry"]
[dev-dependencies.trybuild]
version = "1"
[build-dependencies.serde]
version = "1"
features = ["derive"]
[build-dependencies.toml]
version = "1"