Rollup merge of #58143 - GuillaumeGomez:sort-elements-in-sidebar, r=QuietMisdreavus
Sort elements in the sidebar Fixes #57448. Not sorting fields or variants though. r? @QuietMisdreavus
This commit is contained in:
commit
2c9f1f5750
1 changed files with 84 additions and 72 deletions
|
@ -4480,15 +4480,17 @@ fn sidebar_assoc_items(it: &clean::Item) -> String {
|
||||||
|
|
||||||
{
|
{
|
||||||
let used_links_bor = Rc::new(RefCell::new(&mut used_links));
|
let used_links_bor = Rc::new(RefCell::new(&mut used_links));
|
||||||
let ret = v.iter()
|
let mut ret = v.iter()
|
||||||
.filter(|i| i.inner_impl().trait_.is_none())
|
.filter(|i| i.inner_impl().trait_.is_none())
|
||||||
.flat_map(move |i| get_methods(i.inner_impl(),
|
.flat_map(move |i| get_methods(i.inner_impl(),
|
||||||
false,
|
false,
|
||||||
&mut used_links_bor.borrow_mut()))
|
&mut used_links_bor.borrow_mut()))
|
||||||
.collect::<String>();
|
.collect::<Vec<_>>();
|
||||||
|
// We want links' order to be reproducible so we don't use unstable sort.
|
||||||
|
ret.sort();
|
||||||
if !ret.is_empty() {
|
if !ret.is_empty() {
|
||||||
out.push_str(&format!("<a class=\"sidebar-title\" href=\"#methods\">Methods\
|
out.push_str(&format!("<a class=\"sidebar-title\" href=\"#methods\">Methods\
|
||||||
</a><div class=\"sidebar-links\">{}</div>", ret));
|
</a><div class=\"sidebar-links\">{}</div>", ret.join("")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4512,20 +4514,25 @@ fn sidebar_assoc_items(it: &clean::Item) -> String {
|
||||||
impl_.inner_impl().trait_.as_ref().unwrap())),
|
impl_.inner_impl().trait_.as_ref().unwrap())),
|
||||||
Escape(&format!("{:#}", target))));
|
Escape(&format!("{:#}", target))));
|
||||||
out.push_str("</a>");
|
out.push_str("</a>");
|
||||||
let ret = impls.iter()
|
let mut ret = impls.iter()
|
||||||
.filter(|i| i.inner_impl().trait_.is_none())
|
.filter(|i| i.inner_impl().trait_.is_none())
|
||||||
.flat_map(|i| get_methods(i.inner_impl(),
|
.flat_map(|i| get_methods(i.inner_impl(),
|
||||||
true,
|
true,
|
||||||
&mut used_links))
|
&mut used_links))
|
||||||
.collect::<String>();
|
.collect::<Vec<_>>();
|
||||||
out.push_str(&format!("<div class=\"sidebar-links\">{}</div>", ret));
|
// We want links' order to be reproducible so we don't use unstable sort.
|
||||||
|
ret.sort();
|
||||||
|
if !ret.is_empty() {
|
||||||
|
out.push_str(&format!("<div class=\"sidebar-links\">{}</div>",
|
||||||
|
ret.join("")));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let format_impls = |impls: Vec<&Impl>| {
|
let format_impls = |impls: Vec<&Impl>| {
|
||||||
let mut links = FxHashSet::default();
|
let mut links = FxHashSet::default();
|
||||||
|
|
||||||
impls.iter()
|
let mut ret = impls.iter()
|
||||||
.filter_map(|i| {
|
.filter_map(|i| {
|
||||||
let is_negative_impl = is_negative_impl(i.inner_impl());
|
let is_negative_impl = is_negative_impl(i.inner_impl());
|
||||||
if let Some(ref i) = i.inner_impl().trait_ {
|
if let Some(ref i) = i.inner_impl().trait_ {
|
||||||
|
@ -4545,7 +4552,9 @@ fn sidebar_assoc_items(it: &clean::Item) -> String {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.collect::<String>()
|
.collect::<Vec<String>>();
|
||||||
|
ret.sort();
|
||||||
|
ret.join("")
|
||||||
};
|
};
|
||||||
|
|
||||||
let (synthetic, concrete): (Vec<&Impl>, Vec<&Impl>) = v
|
let (synthetic, concrete): (Vec<&Impl>, Vec<&Impl>) = v
|
||||||
|
@ -4647,7 +4656,7 @@ fn sidebar_trait(fmt: &mut fmt::Formatter, it: &clean::Item,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.collect::<String>();
|
.collect::<String>();
|
||||||
let required = t.items
|
let mut required = t.items
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|m| {
|
.filter_map(|m| {
|
||||||
match m.name {
|
match m.name {
|
||||||
|
@ -4658,18 +4667,18 @@ fn sidebar_trait(fmt: &mut fmt::Formatter, it: &clean::Item,
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.collect::<String>();
|
.collect::<Vec<String>>();
|
||||||
let provided = t.items
|
let mut provided = t.items
|
||||||
.iter()
|
.iter()
|
||||||
.filter_map(|m| {
|
.filter_map(|m| {
|
||||||
match m.name {
|
match m.name {
|
||||||
Some(ref name) if m.is_method() => {
|
Some(ref name) if m.is_method() => {
|
||||||
Some(format!("<a href=\"#method.{name}\">{name}</a>", name=name))
|
Some(format!("<a href=\"#method.{0}\">{0}</a>", name))
|
||||||
}
|
}
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.collect::<String>();
|
.collect::<Vec<String>>();
|
||||||
|
|
||||||
if !types.is_empty() {
|
if !types.is_empty() {
|
||||||
sidebar.push_str(&format!("<a class=\"sidebar-title\" href=\"#associated-types\">\
|
sidebar.push_str(&format!("<a class=\"sidebar-title\" href=\"#associated-types\">\
|
||||||
|
@ -4682,20 +4691,22 @@ fn sidebar_trait(fmt: &mut fmt::Formatter, it: &clean::Item,
|
||||||
consts));
|
consts));
|
||||||
}
|
}
|
||||||
if !required.is_empty() {
|
if !required.is_empty() {
|
||||||
|
required.sort();
|
||||||
sidebar.push_str(&format!("<a class=\"sidebar-title\" href=\"#required-methods\">\
|
sidebar.push_str(&format!("<a class=\"sidebar-title\" href=\"#required-methods\">\
|
||||||
Required Methods</a><div class=\"sidebar-links\">{}</div>",
|
Required Methods</a><div class=\"sidebar-links\">{}</div>",
|
||||||
required));
|
required.join("")));
|
||||||
}
|
}
|
||||||
if !provided.is_empty() {
|
if !provided.is_empty() {
|
||||||
|
provided.sort();
|
||||||
sidebar.push_str(&format!("<a class=\"sidebar-title\" href=\"#provided-methods\">\
|
sidebar.push_str(&format!("<a class=\"sidebar-title\" href=\"#provided-methods\">\
|
||||||
Provided Methods</a><div class=\"sidebar-links\">{}</div>",
|
Provided Methods</a><div class=\"sidebar-links\">{}</div>",
|
||||||
provided));
|
provided.join("")));
|
||||||
}
|
}
|
||||||
|
|
||||||
let c = cache();
|
let c = cache();
|
||||||
|
|
||||||
if let Some(implementors) = c.implementors.get(&it.def_id) {
|
if let Some(implementors) = c.implementors.get(&it.def_id) {
|
||||||
let res = implementors.iter()
|
let mut res = implementors.iter()
|
||||||
.filter(|i| i.inner_impl().for_.def_id()
|
.filter(|i| i.inner_impl().for_.def_id()
|
||||||
.map_or(false, |d| !c.paths.contains_key(&d)))
|
.map_or(false, |d| !c.paths.contains_key(&d)))
|
||||||
.filter_map(|i| {
|
.filter_map(|i| {
|
||||||
|
@ -4708,12 +4719,13 @@ fn sidebar_trait(fmt: &mut fmt::Formatter, it: &clean::Item,
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.collect::<String>();
|
.collect::<Vec<String>>();
|
||||||
if !res.is_empty() {
|
if !res.is_empty() {
|
||||||
|
res.sort();
|
||||||
sidebar.push_str(&format!("<a class=\"sidebar-title\" href=\"#foreign-impls\">\
|
sidebar.push_str(&format!("<a class=\"sidebar-title\" href=\"#foreign-impls\">\
|
||||||
Implementations on Foreign Types</a><div \
|
Implementations on Foreign Types</a><div \
|
||||||
class=\"sidebar-links\">{}</div>",
|
class=\"sidebar-links\">{}</div>",
|
||||||
res));
|
res.join("")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue