error-kit 0.1.0

A comprehensive error handling library for Rust applications
Documentation
  • Coverage
  • 32.61%
    15 out of 46 items documented1 out of 1 items with examples
  • Size
  • Source code size: 26.23 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.88 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • dominikj111/error-kit
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • dominikj111

error-kit 🦀 ⚡

Crates.io Documentation License: BSD-3-Clause Dependency Status Made with Rust

A comprehensive, developer-focused error handling infrastructure built on top of thiserror, providing standardized error messages, common error patterns, and ergonomic helper functions.

Design Principles 🏗️

This crate provides a "batteries-included" approach to error handling with these core principles:

Developer-Focused Messages 👩‍💻

Error messages provide technical context for developers, not end-user UI text.

Type-Safe Enums Over Error Codes 🔢

Uses thiserror::Error derive macro for compile-time checking, pattern matching, and IDE support.

Helper Functions Over Macros 🚀

Explicit, debuggable functions instead of complex macros:

// Clear and debuggable ✨
CommonError::io_error("Failed to read config file")

// Instead of macro magic 🪄❌
error!("Failed to read config file")

Centralized Message Constants 📚

Error messages defined as constants in a dedicated messages module for consistency and maintainability.

Usage Examples 💡

Adding error-kit to Your Project 📦

// Add to Cargo.toml
[dependencies]
error-kit = "0.1.0"

Using error-kit 🚀

use error_kit::CommonError;

// Using helper functions 🔧
let io_err = CommonError::io_error("Failed to read config file");
let filename_err = CommonError::filename_error();

// Using predefined message constants 📝
let timeout_err = CommonError::Timeout; // Uses messages::TIMEOUT_EXCEEDED

// Simple error handling 🎯
let result: Result<Data, CommonError> = some_operation();

match result {
    Err(e) => eprintln!("Error: {}", e),
    Ok(data) => process_data(data),
}

// Or pattern matching when you need specific handling
match result {
    Err(CommonError::Io(_)) => handle_io_error(),
    Err(CommonError::Timeout) => retry_operation(),
    Err(CommonError::FilenameError) => handle_filename_issue(),
    Err(e) => eprintln!("Error: {}", e),
    Ok(data) => process_data(data),
}

Module Structure 🏗️

The error-kit crate is organized into focused modules:

  • messages: Centralized error message constants
  • constructors: Ergonomic constructor functions
  • types: Main error enum with thiserror integration
use error_kit::{
    CommonError,          // Main error type 🎯
    messages,             // Message constants 📚
    constructors,         // Helper constructor functions 🚀
};

Use Cases 🎯

  • Library Development: Structured error types with consistent messaging
  • Application Development: Standardized error handling with reduced boilerplate
  • Error Infrastructure: Foundation for domain-specific error crates and company standards

Future Vision 🔮

This crate aims to become the go-to foundation for error handling, providing:

  • Domain-specific error modules (network, filesystem, parsing, etc.)
  • Error reporting utilities and formatters
  • Integration helpers for popular crates
  • Best practice examples and patterns
  • Community-driven error message standards

Contributing 🤝

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

License 📄

This project is licensed under the BSD 3-Clause License - see the LICENSE file for details.