error-kit

Crates.ioerror-kit
lib.rserror-kit
version0.1.0
created_at2025-09-08 08:30:00.038667+00
updated_at2025-09-08 08:30:00.038667+00
descriptionA comprehensive error handling library for Rust applications
homepage
repositoryhttps://github.com/dominikj111/error-kit
max_upload_size
id1828994
size26,725
Dominik (dominikj111)

documentation

README

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.

Commit count: 5

cargo fmt