5 releases
new 0.2.3 | Nov 22, 2024 |
---|---|
0.2.2 | Nov 15, 2024 |
0.2.1 | Nov 15, 2024 |
0.2.0 | Nov 15, 2024 |
0.1.0 | Nov 14, 2024 |
#1801 in Procedural macros
1,070 downloads per month
Used in 11 crates
(8 directly)
8KB
141 lines
boxed_error
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),
// ...
}
Dependencies
~235–680KB
~16K SLoC