From 3b98571b325c3fc8c42aa2209333bfec9d838718 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Wed, 29 Aug 2018 23:01:57 +0200 Subject: [PATCH] Prevent duplicated impl on foreign types --- src/librustdoc/html/render.rs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 8fb3b570f8a..741efd8becd 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -2943,12 +2943,16 @@ fn item_trait( ")?; + let mut foreign_cache = FxHashSet(); for implementor in foreign { - let assoc_link = AssocItemLink::GotoSource( - implementor.impl_item.def_id, &implementor.inner_impl().provided_trait_methods - ); - render_impl(w, cx, &implementor, assoc_link, - RenderMode::Normal, implementor.impl_item.stable_since(), false)?; + if foreign_cache.insert(implementor.inner_impl().to_string()) { + let assoc_link = AssocItemLink::GotoSource( + implementor.impl_item.def_id, + &implementor.inner_impl().provided_trait_methods + ); + render_impl(w, cx, &implementor, assoc_link, + RenderMode::Normal, implementor.impl_item.stable_since(), false)?; + } } }