Crates.io | boxed_error |
lib.rs | boxed_error |
version | 0.2.3 |
source | src |
created_at | 2024-11-14 18:14:50.31938 |
updated_at | 2024-11-22 00:28:54.81578 |
description | Macro for easily boxing an error |
homepage | |
repository | https://github.com/denoland/boxed_error |
max_upload_size | |
id | 1448158 |
size | 12,869 |
Experimental opinionated way to provide helper methods for use with boxing errors.
Before:
use thiserror::Error;
#[derive(Error, Debug)]
#[error(transparent)]
pub struct DenoResolveError(pub Box<DenoResolveErrorKind>);
impl DenoResolveError {
pub fn as_kind(&self) -> &DenoResolveErrorKind {
&self.0
}
pub fn into_kind(self) -> DenoResolveErrorKind {
*self.0
}
}
impl<E> From<E> for DenoResolveError
where
DenoResolveErrorKind: From<E>,
{
fn from(err: E) -> Self {
DenoResolveError(Box::new(DenoResolveErrorKind::from(err)))
}
}
#[derive(Debug, Error)]
pub enum DenoResolveErrorKind {
#[error("Importing ...")]
InvalidVendorFolderImport,
#[error(transparent)]
MappedResolution(#[from] MappedResolutionError),
// ...
}
impl DenoResolveErrorKind {
pub fn into_box(self) -> DenoResolveError {
DenoResolveError(Box::new(self))
}
}
After:
use boxed_error::Boxed;
use thiserror::Error;
#[derive(Debug, Boxed)]
pub enum DenoResolveError(pub Box<DenoResolveErrorKind>);
#[derive(Debug, Error)]
pub enum DenoResolveErrorKind {
#[error("Importing ...")]
InvalidVendorFolderImport,
#[error(transparent)]
MappedResolution(#[from] MappedResolutionError),
// ...
}