diff options
| author | Lukas Markeffsky <@> | 2024-09-25 22:15:23 +0200 |
|---|---|---|
| committer | Lukas Markeffsky <@> | 2024-09-25 23:45:57 +0200 |
| commit | b1745c3919b57d841c15fe0bfb0dd926ab59bafa (patch) | |
| tree | abe345fac4dea0fb54ce49b4207884700681ea98 /src/librustdoc/fold.rs | |
| parent | 0399709cdc3c5cc22327e9f657dc7956546a0457 (diff) | |
| download | rust-b1745c3919b57d841c15fe0bfb0dd926ab59bafa.tar.gz rust-b1745c3919b57d841c15fe0bfb0dd926ab59bafa.zip | |
de-rc external traits
Don't keep the `external_traits` as shared mutable data between the `DocContext` and `clean::Crate`. Instead, move the data over when necessary. This allows us to get rid of a borrowck hack in the `DocVisitor`.
Diffstat (limited to 'src/librustdoc/fold.rs')
| -rw-r--r-- | src/librustdoc/fold.rs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/librustdoc/fold.rs b/src/librustdoc/fold.rs index c25a4ddb6f3..95e495205ae 100644 --- a/src/librustdoc/fold.rs +++ b/src/librustdoc/fold.rs @@ -1,3 +1,5 @@ +use std::mem; + use crate::clean::*; pub(crate) fn strip_item(mut item: Item) -> Item { @@ -116,10 +118,11 @@ pub(crate) trait DocFolder: Sized { fn fold_crate(&mut self, mut c: Crate) -> Crate { c.module = self.fold_item(c.module).unwrap(); - let external_traits = { std::mem::take(&mut *c.external_traits.borrow_mut()) }; - for (k, mut v) in external_traits { - v.items = v.items.into_iter().filter_map(|i| self.fold_item(i)).collect(); - c.external_traits.borrow_mut().insert(k, v); + for trait_ in c.external_traits.values_mut() { + trait_.items = mem::take(&mut trait_.items) + .into_iter() + .filter_map(|i| self.fold_item(i)) + .collect(); } c |
