This macro piggybacks on thiserror
crate and is supposed to reduce the amount of handwriting when you want errors in your app to be described via explicit types (rather than anyhow
).
Add to Cargo.toml
:
toml
justerror = "0.1"
Add to main.rs
:
```rust
extern crate justerror; ```
This macro takes a subject struct or enum and applies thiserror
attributes with predefined #[error]
messages.
Generally, you can attach #[Error]
macro to an error type and be done with it.
```rust
enum EnumError { Foo, Bar { a: &'static str, b: usize }, }
eprintln!("{}", EnumError::Bar { a: "Hey!", b: 42 });
// EnumError::Bar // === DEBUG DATA: // a: Hey! // b: 42 ```
Macro accepts two optional arguments:
- desc
: string
- fmt
: display
| debug
| "<custom format>"
Both can be applied at the root level.
```rust
enum EnumError { Foo(usize), } ```
And at the variant level.
```rust
enum EnumError { #[error(desc = "Foo error description", fmt = display)] Foo(usize), } ```
fmt
can also be applied to individual fields.
```rust
enum EnumError { #[error(desc = "Foo error description", fmt = display)] Foo(#[fmt(">5")] usize), } ```
See tests for more examples.
MIT.