0.1.0 |
|
---|
#140 in #diagnostics
Used in thisdiagnostic
8KB
169 lines
thisdiagnostic
thisdiagnostic
is a Rust library for adding rich diagnostic metadata to
errors, for some really fancy and customizable error reporting!
Example
What You Write
use thisdiagnostic::Diagnostic;
use thiserror::Error;
#[derive(Error, Debug, Diagnostic)]
pub enum ApiError {
/// Returned when a generic http client-related error has occurred.
#[label("mytool::api::generic_http")]
#[error("Request error:\n\t{0}")]
HttpError(Box<dyn std::error::Error + Send + Sync>, String),
/// Returned when a URL failed to parse.
#[label("mytool::api::invalid_url")]
#[help("Check the URL syntax. URLs must include the protocol part (https://, etc)")]
#[error(transparent)]
UrlParseError(#[from] Box<dyn std::error::Error + Send + Sync>),
/// An API key is required.
#[label("mytool::api::needs_api_key")]
#[help("Please supply an API key.")]
#[error("Endpoint operation requires an API key.")]
NeedsApiKey,
/// Unexpected response
#[label("mytool::api::unexpected_response")]
#[help("This is likely a bug with the server API (or its documentation). Please report it.")]
#[error("Unexpected or undocumented response.")]
BadResponse,
}
What You Get
$ ./mytool
Error: mytool::api::needs_api_key
Endpoint operation requires an API key.
help: Please supply an API key.
License
This project and any contributions to it are licensed under Apache 2.0.
Dependencies
~1.5MB
~36K SLoC