diff options
| author | Guillaume Gomez <guillaume.gomez@huawei.com> | 2022-07-05 17:42:01 +0200 |
|---|---|---|
| committer | Guillaume Gomez <guillaume.gomez@huawei.com> | 2022-07-05 21:33:39 +0200 |
| commit | 6fa68c9b44f5b5032be0388c8f4085842c584c15 (patch) | |
| tree | a0dcdf7e9d639b5d2482fe8d7c1f63a74d5ac80d | |
| parent | 05e69d8fc6c6e2ce720218fe4f6e34757c1aa05a (diff) | |
| download | rust-6fa68c9b44f5b5032be0388c8f4085842c584c15.tar.gz rust-6fa68c9b44f5b5032be0388c8f4085842c584c15.zip | |
Fix link generation in the sidebar for impls
| -rw-r--r-- | src/librustdoc/html/render/mod.rs | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs index 652610e2ab1..e62a8bcfba6 100644 --- a/src/librustdoc/html/render/mod.rs +++ b/src/librustdoc/html/render/mod.rs @@ -1973,21 +1973,18 @@ fn sidebar_assoc_items(cx: &Context<'_>, out: &mut Buffer, it: &clean::Item) { let mut ret = impls .iter() .filter_map(|it| { - if let Some(ref i) = it.inner_impl().trait_ { - let i_display = format!("{:#}", i.print(cx)); - let out = Escape(&i_display); - let encoded = - id_map.derive(small_url_encode(format!("impl-{:#}", i.print(cx)))); - let prefix = match it.inner_impl().polarity { - ty::ImplPolarity::Positive | ty::ImplPolarity::Reservation => "", - ty::ImplPolarity::Negative => "!", - }; - let generated = - format!("<a href=\"#{}\">{}{}</a>", encoded, prefix, out); - if links.insert(generated.clone()) { Some(generated) } else { None } - } else { - None - } + let trait_ = it.inner_impl().trait_.as_ref()?; + let encoded = + id_map.derive(get_id_for_impl(&it.inner_impl().for_, Some(trait_), cx)); + + let i_display = format!("{:#}", trait_.print(cx)); + let out = Escape(&i_display); + let prefix = match it.inner_impl().polarity { + ty::ImplPolarity::Positive | ty::ImplPolarity::Reservation => "", + ty::ImplPolarity::Negative => "!", + }; + let generated = format!("<a href=\"#{}\">{}{}</a>", encoded, prefix, out); + if links.insert(generated.clone()) { Some(generated) } else { None } }) .collect::<Vec<String>>(); ret.sort(); |
