| Crates.io | this-error-from-box |
| lib.rs | this-error-from-box |
| version | 0.2.1 |
| created_at | 2025-09-23 16:31:50.13073+00 |
| updated_at | 2025-09-24 19:39:18.581918+00 |
| description | Generates From impls for boxed thiserror enum variants |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1851716 |
| size | 9,436 |
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.
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))
}
}
cargo add this-error-from-box
Box<T> and the attribute #[from].From<T> implementation is generated for other variants.