diff options
| author | Vitaly _Vi Shukela <vi0oss@gmail.com> | 2017-09-29 14:28:25 +0300 |
|---|---|---|
| committer | Vitaly _Vi Shukela <vi0oss@gmail.com> | 2017-09-29 14:32:57 +0300 |
| commit | 87d7520d0f88f87fa203f2a44d63ea845a46d5d3 (patch) | |
| tree | 8d6a1eb1bb3f0057076af1b713367a2933a7cd3e /src/librustdoc/html | |
| parent | 3c96d40d326b64f6a50f4a902051fe71c4acdc92 (diff) | |
| download | rust-87d7520d0f88f87fa203f2a44d63ea845a46d5d3.tar.gz rust-87d7520d0f88f87fa203f2a44d63ea845a46d5d3.zip | |
rustdoc: Extract converter from Impementor to Item to a fn
Diffstat (limited to 'src/librustdoc/html')
| -rw-r--r-- | src/librustdoc/html/render.rs | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 485e75443fe..d58cfcf18b6 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -2253,6 +2253,18 @@ fn item_function(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item, document(w, cx, it) } +fn implementor2item<'a>(cache: &'a Cache, imp : &Implementor) -> Option<&'a clean::Item> { + if let Some(t_did) = imp.impl_.for_.def_id() { + if let Some(impl_item) = cache.impls.get(&t_did).and_then(|i| i.iter() + .find(|i| i.impl_item.def_id == imp.def_id)) + { + let i = &impl_item.impl_item; + return Some(i); + } + } + None +} + fn item_trait(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item, t: &clean::Trait) -> fmt::Result { let mut bounds = String::new(); @@ -2463,19 +2475,13 @@ fn item_trait(w: &mut fmt::Formatter, cx: &Context, it: &clean::Item, ")?; for implementor in foreign { - // need to get from a clean::Impl to a clean::Item so i can use render_impl - if let Some(t_did) = implementor.impl_.for_.def_id() { - if let Some(impl_item) = cache.impls.get(&t_did).and_then(|i| i.iter() - .find(|i| i.impl_item.def_id == implementor.def_id)) - { - let i = &impl_item.impl_item; - let impl_ = Impl { impl_item: i.clone() }; - let assoc_link = AssocItemLink::GotoSource( - i.def_id, &implementor.impl_.provided_trait_methods - ); - render_impl(w, cx, &impl_, assoc_link, - RenderMode::Normal, i.stable_since(), false)?; - } + if let Some(i) = implementor2item(&cache, implementor) { + let impl_ = Impl { impl_item: i.clone() }; + let assoc_link = AssocItemLink::GotoSource( + i.def_id, &implementor.impl_.provided_trait_methods + ); + render_impl(w, cx, &impl_, assoc_link, + RenderMode::Normal, i.stable_since(), false)?; } } } |
