#error-message #diagnostics #syn #miette #pretty #wrapper

syn-miette

使用 miette 提供美观诊断信息的 syn::Error 包装器

3 个版本 (破坏性更新)

0.3.0 2024年4月8日
0.2.0 2024年3月17日
0.1.0 2023年10月4日

#4#miette

Download history 1/week @ 2024-05-23 4/week @ 2024-05-30 2/week @ 2024-06-27 8/week @ 2024-07-04

每月下载量 184
用于 3 crates

MIT/Apache

15KB
245

使用 miette 提供美观诊断信息的 syn::Error 包装器。

使用方法

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);

assert_eq!(
    error.render(), // only with `--feature render`
"  × expected identifier
   ╭─[2:12]
 1 │
 2 │ pub struct {
   ·            ┬
   ·            ╰── expected identifier
 3 │     num_yaks: usize
   ╰────
"
);

特别地,Error 正确渲染了已被 syn::Error::combine 组合的子元素

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

依赖项

~0.9–2MB
~34K SLoC