4 releases
0.3.7 | Oct 5, 2024 |
---|---|
0.3.6 | Jun 21, 2024 |
0.3.5 | Jun 21, 2024 |
0.1.0 | May 5, 2024 |
#20 in #shorthand
47 downloads per month
Used in 3 crates
48KB
914 lines
Error Tree
Overview
error_tree
is a Rust procedural macro crate designed to simplify error handling in Rust applications. It allows you to define complex error hierarchies in a clean and structured way, making your error handling logic both more robust and easier to maintain.
Features
- Define nested error enums with ease.
- Automatically generate
From
implementations for error conversions. - Simplify complex error handling in Rust.
Installation
Add error_tree
to your Cargo.toml
file under [dependencies]
:
[dependencies]
error_tree = "0.1.0"
Usage
Here's a basic example of how to use error_tree
:
use error_tree::error_tree;
error_tree!{
// Enumerate possible errors for capturing audio.
pub enum PassiveAudioCaptureError {
FormatError,
DeviceError(DeviceError),
IOError(IOError),
WavError(WavError),
HostError(HostError),
StreamOrChannelError(StreamOrChannelError),
}
pub enum MonitorAllInputsError {
DeviceError(DeviceError),
}
pub enum StreamOrChannelError {
StreamError(StreamError),
ChannelError(ChannelError),
}
pub enum IOError {
Basic(std::io::Error),
}
pub enum ChannelError {
ChannelRecvError(mpsc::RecvError),
}
pub enum StreamError {
StreamError(cpal::StreamError),
PauseStreamError(cpal::PauseStreamError),
BuildStreamError(cpal::BuildStreamError),
PlayStreamError(cpal::PlayStreamError),
SupportedStreamConfigsError(cpal::SupportedStreamConfigsError),
DefaultStreamConfigError(cpal::DefaultStreamConfigError),
}
pub enum DeviceError {
DeviceNotAvailable {
device_name: String,
},
Basic(cpal::DevicesError),
NameError(cpal::DeviceNameError),
}
pub enum WavError {
Hound(hound::Error),
}
pub enum HostError {
HostUnavailable(cpal::HostUnavailable),
}
}
This will automatically generate the necessary From
implementations for error conversions within your defined hierarchy.
Contributing
Contributions to error_tree
are welcome! Please read our CONTRIBUTING.md for guidelines on how to contribute.
License
This crate is distributed under the terms of MIT License.
Dependencies
~6.5MB
~110K SLoC