error-tree

Crates.ioerror-tree
lib.rserror-tree
version0.3.6
sourcesrc
created_at2024-05-05 21:32:30.915319
updated_at2024-06-21 21:41:54.528847
descriptionThis crate let's us use the `error_tree!` proc macro for ergonomic error hierarchy definition
homepage
repositoryhttps://github.com/klebs6/klebs-general
max_upload_size
id1230559
size48,245
(klebs6)

documentation

README

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.

Commit count: 40

cargo fmt