Code:
use pulldown_cmark::{Options, Parser};
fn main() {
let markdown_input: &str = "See also [`g()`][crate::g] and [`h()`]";
println!("Parsing the following markdown string:\n{}", markdown_input);
// Set up parser.
let parser = Parser::new_with_broken_link_callback(markdown_input, Options::empty(), Some(&|_, bad_link| {
println!("got broken link: {}", bad_link);
None
}));
for _ in parser {}
}
Output:
Parsing the following markdown string:
See also [`g()`][crate::g] and [`h()`]
got broken link: crate::g
got broken link: crate::g
got broken link: `h()`
This is causing issues downstream in rust-lang/rust#72771, I can work around them but I think it would be better for pulldown to only call the callback once for each broken link.