pub struct Patch<'a> { /* private fields */ }Expand description
Suggested edit to the Snippet
See Snippet::patch
§Example
use annotate_snippets::{renderer::DecorStyle, AnnotationKind, Level, Patch, Renderer, Snippet};
fn main() {
    let source = r#"
#![allow(dead_code)]
struct U <T> {
    wtf: Option<Box<U<T>>>,
    x: T,
}
fn main() {
    U {
        wtf: Some(Box(U {
            wtf: None,
            x: (),
        })),
        x: ()
    };
    let _ = std::collections::HashMap(); 
    let _ = std::collections::HashMap {};
    let _ = Box {};
}
"#;
    let report = &[
        Level::ERROR
            .primary_title(
                "cannot construct `Box<_, _>` with struct literal syntax due to private fields",
            )
            .element(
                Snippet::source(source)
                    .path("$DIR/multi-suggestion.rs")
                    .annotation(AnnotationKind::Primary.span(295..298)),
            )
            .element(Level::NOTE.message("private fields `0` and `1` that were not provided")),
        Level::HELP
            .secondary_title(
                "you might have meant to use an associated function to build this type",
            )
            .element(
                Snippet::source(source)
                    .path("$DIR/multi-suggestion.rs")
                    .patch(Patch::new(298..301, "::new(_)")),
            )
            .element(
                Snippet::source(source)
                    .path("$DIR/multi-suggestion.rs")
                    .patch(Patch::new(298..301, "::new_uninit()")),
            )
            .element(
                Snippet::source(source)
                    .path("$DIR/multi-suggestion.rs")
                    .patch(Patch::new(298..301, "::new_zeroed()")),
            )
            .element(
                Snippet::source(source)
                    .path("$DIR/multi-suggestion.rs")
                    .patch(Patch::new(298..301, "::new_in(_, _)")),
            )
            .element(Level::NOTE.no_name().message("and 12 other candidates")),
        Level::HELP
            .secondary_title("consider using the `Default` trait")
            .element(
                Snippet::source(source)
                    .path("$DIR/multi-suggestion.rs")
                    .patch(Patch::new(295..295, "<"))
                    .patch(Patch::new(
                        298..301,
                        " as std::default::Default>::default()",
                    )),
            ),
    ];
    let renderer = Renderer::styled().decor_style(DecorStyle::Unicode);
    anstream::println!("{}", renderer.render(report));
}Implementations§
Source§impl<'a> Patch<'a>
 
impl<'a> Patch<'a>
Sourcepub fn new(span: Range<usize>, replacement: impl Into<Cow<'a, str>>) -> Self
 
pub fn new(span: Range<usize>, replacement: impl Into<Cow<'a, str>>) -> Self
Splice replacement into the Snippet at the specified byte span
Text passed to this function is considered “untrusted input”, as such all text is passed through a normalization function. Pre-styled text is not allowed to be passed to this function.
Trait Implementations§
Auto Trait Implementations§
impl<'a> Freeze for Patch<'a>
impl<'a> RefUnwindSafe for Patch<'a>
impl<'a> Send for Patch<'a>
impl<'a> Sync for Patch<'a>
impl<'a> Unpin for Patch<'a>
impl<'a> UnwindSafe for Patch<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more