about summary refs log tree commit diff
path: root/src/librustdoc/visit.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/librustdoc/visit.rs')
-rw-r--r--src/librustdoc/visit.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/librustdoc/visit.rs b/src/librustdoc/visit.rs
index 9edf6e11bec..44129548d1c 100644
--- a/src/librustdoc/visit.rs
+++ b/src/librustdoc/visit.rs
@@ -43,9 +43,11 @@ crate trait DocVisitor: Sized {
     fn visit_crate(&mut self, c: &Crate) {
         self.visit_item(&c.module);
 
-        let external_traits = c.external_traits.borrow();
-        for v in external_traits.values() {
-            v.trait_.items.iter().for_each(|i| self.visit_item(i))
+        // FIXME: make this a simple by-ref for loop once external_traits is cleaned up
+        let external_traits = { std::mem::take(&mut *c.external_traits.borrow_mut()) };
+        for (k, v) in external_traits {
+            v.trait_.items.iter().for_each(|i| self.visit_item(i));
+            c.external_traits.borrow_mut().insert(k, v);
         }
     }
 }