From d98449d110fe49355ae265623a5bbf6796525c92 Mon Sep 17 00:00:00 2001 From: QuietMisdreavus <grey@quietmisdreavus.net> Date: Wed, 21 Feb 2018 17:44:49 -0600 Subject: [PATCH] manually release `cx.external_traits` while building the new trait --- src/librustdoc/clean/inline.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/librustdoc/clean/inline.rs b/src/librustdoc/clean/inline.rs index 9aba399b3b0..c09c6eab4d2 100644 --- a/src/librustdoc/clean/inline.rs +++ b/src/librustdoc/clean/inline.rs @@ -494,7 +494,11 @@ fn separate_supertrait_bounds(mut g: clean::Generics) } pub fn record_extern_trait(cx: &DocContext, did: DefId) { - cx.external_traits.borrow_mut().entry(did).or_insert_with(|| { - build_external_trait(cx, did) - }); + if cx.external_traits.borrow().contains_key(did) { + return; + } + + let trait_ = build_external_trait(cx, did); + + cx.external_traits.borrow_mut().insert(did, trait_); }