annotate-snippets 0.12.15

Format diagnostic reports, including highlighting snippets of text
Documentation
use annotate_snippets::renderer::DecorStyle;
use annotate_snippets::{AnnotationKind, Level, Renderer, Snippet};

fn main() {
    let source = r#"//@ compile-flags: -Zterminal-urls=yes
fn main() {
    let () = 4; //~ ERROR
}
"#;
    let report = &[Level::ERROR
        .primary_title("mismatched types")
        .id("E0308")
        .id_url("https://doc.rust-lang.org/error_codes/E0308.html")
        .element(
            Snippet::source(source)
                .line_start(1)
                .path("$DIR/terminal_urls.rs")
                .annotation(
                    AnnotationKind::Primary
                        .span(59..61)
                        .label("expected integer, found `()`"),
                )
                .annotation(
                    AnnotationKind::Context
                        .span(64..65)
                        .label("this expression has type `{integer}`"),
                ),
        )];

    let renderer = Renderer::styled().decor_style(DecorStyle::Unicode);
    anstream::println!("{}", renderer.render(report));
}