decrust-promac-runtime

Crates.iodecrust-promac-runtime
lib.rsdecrust-promac-runtime
version1.2.6
created_at2025-05-25 19:15:20.329858+00
updated_at2025-05-25 19:30:26.305526+00
descriptionThe ultimate all-in-one error handling framework for Rust
homepage
repositoryhttps://github.com/arcmoonstudios/decrust
max_upload_size
id1688615
size41,852
Lord Xyn (arcmoonstudios)

documentation

README

Decrust-Promac-Runtime 🦀⚙️

Runtime Support for Decrust Procedural Macros

Crates.io Documentation License: BSL-1.1

Decrust-Promac-Runtime provides the essential runtime support and utilities needed by the Decrust procedural macros. This crate contains the runtime components that enable the decrust! macro to perform its advanced error handling and autocorrection capabilities.

🚀 Quick Start

This crate is typically used indirectly through the main decrust crate, but can be used directly for advanced scenarios:

use decrust_promac_runtime::{DecrustMacroResult, DecrustMacroError};

// Runtime support for macro-generated code
fn handle_macro_result<T>(result: DecrustMacroResult<T>) -> Result<T, DecrustMacroError> {
    match result {
        DecrustMacroResult::Success(value) => Ok(value),
        DecrustMacroResult::Error(error) => Err(error),
        DecrustMacroResult::Retry { attempt, max_attempts } => {
            if attempt < max_attempts {
                // Retry logic handled by macro expansion
                todo!("Retry handled by macro")
            } else {
                Err(DecrustMacroError::MaxRetriesExceeded)
            }
        }
    }
}

🎯 Core Components

1. Macro Result Types 📊

Specialized result types that support the advanced features of the decrust! macro.

use decrust_promac_runtime::{DecrustMacroResult, DecrustMacroError};

// Result type that supports retry logic
pub enum DecrustMacroResult<T> {
    Success(T),
    Error(DecrustMacroError),
    Retry { attempt: u32, max_attempts: u32 },
}

2. Runtime Error Handling

Error types specifically designed for macro-generated code with enhanced debugging information.

use decrust_promac_runtime::DecrustMacroError;

// Specialized error types for macro operations
pub enum DecrustMacroError {
    CompilationError(String),
    RuntimeError(String),
    MaxRetriesExceeded,
    CircuitBreakerOpen,
    ValidationFailed(String),
}

3. Macro Utilities 🛠️

Helper functions and utilities used by the procedural macros during code generation.

use decrust_promac_runtime::utils::{generate_error_context, format_suggestion};

// Utilities for macro-generated code
let context = generate_error_context("operation_name", "additional_info");
let suggestion = format_suggestion("Try checking the input parameters");

🏗️ Architecture

This crate provides runtime support for:

  • Macro Result Handling - Specialized result types for macro operations
  • Error Context Generation - Runtime error context creation
  • Retry Logic Support - Infrastructure for automatic retry mechanisms
  • Circuit Breaker Integration - Runtime support for circuit breaker patterns
  • Validation Helpers - Runtime validation utilities

🔧 Integration

This crate is automatically included when you use the main decrust crate:

[dependencies]
decrust = "1.2"  # Includes decrust-promac-runtime automatically

For direct usage (advanced scenarios):

[dependencies]
decrust-promac-runtime = "1.2"

📚 Features

  • Lightweight Runtime - Minimal overhead for macro-generated code
  • Error Context - Rich error information for debugging
  • Retry Support - Built-in retry mechanism infrastructure
  • Circuit Breaker - Runtime circuit breaker state management
  • Validation - Runtime validation helpers

🎨 Usage Patterns

Macro-Generated Error Handling

use decrust_promac_runtime::{DecrustMacroResult, handle_with_context};

// This is typically generated by the decrust! macro
fn generated_operation() -> DecrustMacroResult<String> {
    let result = risky_operation();
    handle_with_context(result, "operation_context")
}

Custom Runtime Integration

use decrust_promac_runtime::{DecrustMacroError, create_runtime_context};

// Custom integration with macro runtime
fn custom_handler() -> Result<(), DecrustMacroError> {
    let context = create_runtime_context("custom_operation");
    // Your custom logic here
    Ok(())
}

🛡️ Licensing

This project is licensed under the Business Source License 1.1 (BSL 1.1).

  • ✅ Non-production use is FREE (development, testing, academic, personal)
  • 💰 Commercial/production use requires a paid license from ArcMoon Studios
  • 📧 Contact: LordXyn@proton.me for commercial licensing inquiries

Change Date: 2029-05-25 | Change License: GNU GPL v3


Made with ❤️ by ArcMoon Studios

Commit count: 69

cargo fmt