An open API service indexing awesome lists of open source software.

https://github.com/zkat/thisdiagnostic

Add nice user-facing diagnostics to your errors without being weird about it.
https://github.com/zkat/thisdiagnostic

Last synced: 8 months ago
JSON representation

Add nice user-facing diagnostics to your errors without being weird about it.

Awesome Lists containing this project

README

          

# 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

```rust
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, 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),

/// 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

```ignore
$ ./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](LICENSE.md).