syn-miette 0.2.0

A `syn::Error` wrapper that provides pretty diagnostic messages using `miette`.
Documentation

A [syn::Error] wrapper that provides pretty diagnostic messages using [miette].

  × expected identifier
   ╭─[1:1]
 1 │
 2 │ pub struct {
   ·           ┬
   ·           ╰── expected identifier
 3 │     num_yaks: usize
   ╰────

Usage

let source = r"
pub struct {
    num_yaks: usize
}";

let error = syn::parse_str::<syn::DeriveInput>(source).unwrap_err();
let error = syn_miette::Error::new(error, source);

let rendered = render(error); // See miette documentation for usage

println!("{}", rendered);

Notably, [Error] properly renders children that have been [syn::Error::combine]-ed:

 × duplicate definition of `Foo`
  ╭─[1:1]
1 │ struct Foo;
  ·        ─┬─
  ·         ╰── initial definition here
2 │ enum Bar {}
3 │ union Foo {}
  ·       ─┬─
  ·        ╰── duplicate definition of `Foo`
  ╰────