diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2023-02-18 14:10:38 +0400 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2023-02-18 14:45:01 +0400 |
| commit | ccdb598d1b495952bdb09122dc53c39b40f23758 (patch) | |
| tree | a21f00dcb8eae10686b34051bf36fb1a816547c1 /compiler/rustc_resolve/src/rustdoc.rs | |
| parent | 34ba77d26064f9038fddd5349ceede088f8557f9 (diff) | |
| download | rust-ccdb598d1b495952bdb09122dc53c39b40f23758.tar.gz rust-ccdb598d1b495952bdb09122dc53c39b40f23758.zip | |
rustdoc: Cleanup broken link callbacks
Diffstat (limited to 'compiler/rustc_resolve/src/rustdoc.rs')
| -rw-r--r-- | compiler/rustc_resolve/src/rustdoc.rs | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/compiler/rustc_resolve/src/rustdoc.rs b/compiler/rustc_resolve/src/rustdoc.rs index 3425e24585c..be49fbfaa29 100644 --- a/compiler/rustc_resolve/src/rustdoc.rs +++ b/compiler/rustc_resolve/src/rustdoc.rs @@ -5,7 +5,6 @@ use rustc_data_structures::fx::FxHashMap; use rustc_span::def_id::DefId; use rustc_span::symbol::{kw, Symbol}; use rustc_span::Span; -use std::cell::RefCell; use std::{cmp, mem}; #[derive(Clone, Copy, PartialEq, Eq, Debug)] @@ -354,16 +353,14 @@ pub(crate) fn attrs_to_preprocessed_links(attrs: &[ast::Attribute]) -> Vec<Strin let (doc_fragments, _) = attrs_to_doc_fragments(attrs.iter().map(|attr| (attr, None)), true); let doc = prepare_to_doc_link_resolution(&doc_fragments).into_values().next().unwrap(); - let links = RefCell::new(Vec::new()); - let mut callback = |link: BrokenLink<'_>| { - links.borrow_mut().push(preprocess_link(&link.reference)); - None - }; - for event in Parser::new_with_broken_link_callback(&doc, main_body_opts(), Some(&mut callback)) - { - if let Event::Start(Tag::Link(_, dest, _)) = event { - links.borrow_mut().push(preprocess_link(&dest)); - } - } - links.into_inner() + Parser::new_with_broken_link_callback( + &doc, + main_body_opts(), + Some(&mut |link: BrokenLink<'_>| Some((link.reference, "".into()))), + ) + .filter_map(|event| match event { + Event::Start(Tag::Link(_, dest, _)) => Some(preprocess_link(&dest)), + _ => None, + }) + .collect() } |
