error_set 0.9.1

Quick error declarations and automatic conversions between errors for precisely typed error handling. Inspired by Zig's error set type.
Documentation
use error_set::error_set;

error_set! {
    MediaError := {
        IoError(std::io::Error)
        } || BookParsingError || DownloadError || UploadError
    BookParsingError := {
        MissingDescriptionArg
    } || BookSectionParsingError
    BookSectionParsingError := {
        MissingNameArg,
        NoContents,
    } || BookParsingError
    DownloadError := {
        CouldNotConnect,
        OutOfMemory(std::io::Error),
    }
    UploadError := {
        NoConnection(std::io::Error),
    }
}