#error-handling #enum-variant #boxed #enums #generator

macro this-error-from-box

Generates From impls for boxed thiserror enum variants

3 unstable releases

Uses new Rust 2024

0.2.1 Sep 24, 2025
0.2.0 Sep 23, 2025
0.1.1 Sep 23, 2025
0.1.0 Sep 23, 2025

#734 in Procedural macros

Download history 19/week @ 2025-10-06 7/week @ 2025-10-13 1/week @ 2025-10-20

110 downloads per month

MIT license

6KB
88 lines

this-error-from-box (vibe-coded)

This crate provides a procedural macro for Rust that automatically generates From<T> implementations for error enums annotated with #[this_error_from_box] and variants containing #[from] Box<T>.

You can optionally specify a custom wrapper type as an argument, e.g. #[this_error_from_box(MyWrapper)]. If omitted, Box is used by default.

Example

use thiserror::Error;
use this_error_from_box::this_error_from_box;

#[derive(Error, Debug)]
#[this_error_from_box]
pub enum MyError {
    Io(#[from] Box<std::io::Error>),
    Utf8(#[from] Box<std::string::FromUtf8Error>),
    // other variants ...
}

This will automatically generate the following implementations:

impl From<std::io::Error> for MyError {
    fn from(e: std::io::Error) -> Self {
        MyError::Io(Box::from(e))
    }
}

impl From<std::string::FromUtf8Error> for MyError {
    fn from(e: std::string::FromUtf8Error) -> Self {
        MyError::Utf8(Box::from(e))
    }
}

Installation

cargo add this-error-from-box

Notes

  • The macro only works for variants with exactly one field of type Box<T> and the attribute #[from].
  • No From<T> implementation is generated for other variants.

Dependencies

~130–510KB
~12K SLoC