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 |
|
#734 in Procedural macros
110 downloads per month
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