Decrust
A comprehensive error handling framework for Rust applications that provides structured error types, rich context, intelligent autocorrection suggestions, and resilience patterns.
Features
🎯 Core Error Handling
- Unified Error Type: A comprehensive
DecrustError
enum covering 16+ error scenarios - Rich Error Context: Detailed error information with source location, metadata, and recovery suggestions
- Backtrace Support: Environment-aware backtrace capture with zero external dependencies
- Error Categorization: Automatic categorization of errors for better handling and reporting
🔧 Intelligent Autocorrection Framework
- 39 Error Types Supported: Automatic, interactive, and manual guidance for common programming errors
- AST-Aware Fixes: Context-aware code generation and syntax tree manipulation
- Template-Based Generation: Extensible fix templates for consistent code generation
- Parameter Extraction: Regex and diagnostic-based parameter extraction from error messages
🛡️ Resilience Patterns
- Circuit Breaker: Production-ready circuit breaker implementation with metrics
- Fault Tolerance: Configurable failure thresholds and recovery strategies
- Observer Pattern: Extensible event system for monitoring circuit breaker state
- Async Support: Full async/await support with Tokio integration
📊 Advanced Reporting
- Multiple Formats: Plain text, JSON, Markdown, and HTML output
- Syntax Highlighting: AST-aware code snippet formatting
- Structured Output: Machine-readable error reports for tooling integration
- Configurable Verbosity: Fine-grained control over report content
Quick Start
Add Decrust to your Cargo.toml
:
[]
= "0.1.0"
Basic Error Handling
use ;
use DecrustBacktrace;
use PathBuf;
Error Reporting
use ;
use ErrorReportFormat;
let error = Validation ;
let reporter = new;
// Plain text report
let plain_config = ErrorReportConfig ;
println!;
// JSON report
let json_config = ErrorReportConfig ;
println!;
Circuit Breaker Pattern
use ;
use Duration;
let config = CircuitBreakerConfig ;
let circuit_breaker = new;
// Execute operation through circuit breaker
let result = circuit_breaker.execute;
match result
Autocorrection System
use ;
let mut decrust = new;
// Register parameter extractors
decrust.register_parameter_extractor;
decrust.register_parameter_extractor;
// Get autocorrection suggestions
if let Some = decrust.get_autocorrection_suggestion
Error Types
Decrust provides 16 comprehensive error variants:
Error Type | Description | Use Case |
---|---|---|
Io |
File system and I/O operations | File not found, permission denied |
Parse |
Data parsing errors | JSON/YAML parsing failures |
Network |
Network communication failures | HTTP timeouts, DNS resolution |
Config |
Configuration-related issues | Missing config keys, invalid values |
Validation |
Data validation failures | Invalid email, out of range values |
Internal |
Internal system errors | Unexpected state, assertion failures |
CircuitBreakerOpen |
Circuit breaker protection | Service unavailable |
Timeout |
Operation timeouts | Database query timeout |
ResourceExhausted |
Resource limits exceeded | Memory, connections, rate limits |
NotFound |
Resource not found | User not found, endpoint missing |
StateConflict |
State consistency issues | Optimistic locking failures |
Concurrency |
Threading and synchronization | Race conditions, deadlocks |
ExternalService |
Third-party service failures | API errors, service downtime |
MissingValue |
Required values missing | Null pointer, empty required field |
MultipleErrors |
Aggregated error collections | Batch operation failures |
WithRichContext |
Errors with additional context | Enhanced error information |
Style |
Code style and formatting | Linting issues, formatting problems |
Oops |
General purpose wrapper | Wrapping external errors |
Autocorrection Framework
The autocorrection system provides intelligent suggestions for 39 types of programming errors:
🤖 Automatic Fixes (8 types)
Direct code corrections applied automatically:
- Unused imports (
unused_imports
) - Unused variables (
unused_variable
) - Missing semicolons
- Unnecessary clones
- Unnecessary braces
- Unused
mut
keywords - Unreachable code
- Missing imports (
E0433
)
🎯 Interactive Fixes (13 types)
Presents multiple solution options:
- Type mismatches (
E0308
) - Missing lifetimes (
E0106
) - Private field access (
E0603
) - Parameter mismatches (
E0618
/E0617
) - Generic parameter conflicts (
E0403
) - Missing trait implementations (
E0599
/E0277
) - Immutable borrow issues (
E0596
) - Use of moved values (
E0382
) - Non-exhaustive patterns (
E0005
) - Struct/enum parameter mismatches (
E0023
/E0027
)
📖 Manual Guidance (18 types)
Provides detailed guidance for complex issues:
- Division by zero prevention (
E0601
/E0593
) - Function argument corrections (
E0061
) - Reference lifetime issues (
E0515
) - Recursive type definitions (
E0072
) - Unstable feature usage (
E0658
) - Closure lifetime problems (
E0373
) - Network connectivity issues
- File permission problems
- Configuration format issues
- JSON/YAML parsing failures
- TLS certificate validation
- Unsafe
unwrap()
usage - Runtime panic sources
Syntax Generation
Template-based code generation with AST awareness:
use ;
use HashMap;
let generator = new;
// Generate trait implementation
let mut methods = new;
methods.insert;
let trait_impl = generator.generate_trait_impl;
// Generate import statements
let import = generator.generate_import;
// Output: use std::collections::{HashMap, HashSet};
// Create fix templates
let template = new
.add_category
.add_error_code;
Configuration
Environment Variables
RUST_BACKTRACE=1
orRUST_LIB_BACKTRACE=1
: Enable backtrace captureRUST_BACKTRACE=full
: Enable full backtrace with all frames
Feature Flags
[]
= { = "0.1.0", = ["tokio", "serde"] }
tokio
: Async circuit breaker supportserde
: Serialization support for error typesrand
: Random jitter for circuit breaker timing
Examples
The examples/
directory contains comprehensive demonstrations:
basic_usage.rs
: Core error handling patterns and reporting- Circuit breaker patterns: Resilience and fault tolerance
- Autocorrection system: Error analysis and fix suggestions
- Syntax generation: Template-based code generation
Run examples with:
Architecture
Decrust is built with a modular architecture:
src/
├── lib.rs # Main error enum and core types
├── backtrace.rs # Environment-aware backtrace system
├── circuit_breaker.rs # Circuit breaker implementation
├── decrust.rs # Autocorrection framework (10,500+ lines)
├── reporter.rs # Multi-format error reporting
├── syntax.rs # AST-aware code generation
└── types.rs # Core type definitions and traits
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ by ArcMoon Studios