echoes 0.10.2

Find duplicated Rust doctests, functions and contexts
Documentation
use syn_canon::CanonicalForm;

/// The canonical view of one parsed source.
fn form(source: &str) -> CanonicalForm {
    syn_canon::canonicalize(syn::parse_str(source).unwrap())
}

/// The canonical view of one parsed source, with opaque macro bodies.
fn failing(source: &str) -> CanonicalForm {
    syn_canon::canonicalize_failing(syn::parse_str(source).unwrap())
}

/// The two sources canonicalize identically, keep equal sizes, and differ as failing forms.
pub(super) fn same(left: &str, right: &str) {
    let a = form(left);
    let b = form(right);
    assert_eq!(a, b, "{left}\n{right}");
    assert_eq!(a.body_units(), b.body_units());
    assert_eq!(a.leaf_tokens(), b.leaf_tokens());
    assert_ne!(failing(left), failing(right));
}