Skip to content

Commit 938c8c1

Browse files
committed
This doesn't seem necessary?
1 parent d78f19e commit 938c8c1

File tree

4 files changed

+17
-37
lines changed

4 files changed

+17
-37
lines changed

src/librustdoc/clean/mod.rs

-6
Original file line numberDiff line numberDiff line change
@@ -507,12 +507,6 @@ impl attr::AttrMetaMethods for Attribute {
507507
fn meta_item_list<'a>(&'a self) -> Option<&'a [P<ast::MetaItem>]> { None }
508508
fn span(&self) -> codemap::Span { unimplemented!() }
509509
}
510-
impl<'a> attr::AttrMetaMethods for &'a Attribute {
511-
fn name(&self) -> InternedString { (**self).name() }
512-
fn value_str(&self) -> Option<InternedString> { (**self).value_str() }
513-
fn meta_item_list(&self) -> Option<&[P<ast::MetaItem>]> { None }
514-
fn span(&self) -> codemap::Span { unimplemented!() }
515-
}
516510

517511
#[derive(Clone, RustcEncodable, RustcDecodable, PartialEq, Debug)]
518512
pub struct TyParam {

src/librustdoc/fold.rs

+14-26
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
// except according to those terms.
1010

1111
use clean::*;
12-
use std::collections::HashMap;
13-
use std::mem::{replace, swap};
1412

1513
pub trait DocFolder : Sized {
1614
fn fold_item(&mut self, item: Item) -> Option<Item> {
@@ -20,42 +18,36 @@ pub trait DocFolder : Sized {
2018
/// don't override!
2119
fn fold_item_recur(&mut self, item: Item) -> Option<Item> {
2220
let Item { attrs, name, source, visibility, def_id, inner, stability, deprecation } = item;
23-
let inner = inner;
2421
let inner = match inner {
2522
StructItem(mut i) => {
26-
let mut foo = Vec::new(); swap(&mut foo, &mut i.fields);
27-
let num_fields = foo.len();
28-
i.fields.extend(foo.into_iter().filter_map(|x| self.fold_item(x)));
23+
let num_fields = i.fields.len();
24+
i.fields = i.fields.into_iter().filter_map(|x| self.fold_item(x)).collect();
2925
i.fields_stripped |= num_fields != i.fields.len();
3026
StructItem(i)
3127
},
3228
ModuleItem(i) => {
3329
ModuleItem(self.fold_mod(i))
3430
},
3531
EnumItem(mut i) => {
36-
let mut foo = Vec::new(); swap(&mut foo, &mut i.variants);
37-
let num_variants = foo.len();
38-
i.variants.extend(foo.into_iter().filter_map(|x| self.fold_item(x)));
32+
let num_variants = i.variants.len();
33+
i.variants = i.variants.into_iter().filter_map(|x| self.fold_item(x)).collect();
3934
i.variants_stripped |= num_variants != i.variants.len();
4035
EnumItem(i)
4136
},
4237
TraitItem(mut i) => {
43-
let mut foo = Vec::new(); swap(&mut foo, &mut i.items);
44-
i.items.extend(foo.into_iter().filter_map(|x| self.fold_item(x)));
38+
i.items = i.items.into_iter().filter_map(|x| self.fold_item(x)).collect();
4539
TraitItem(i)
4640
},
4741
ImplItem(mut i) => {
48-
let mut foo = Vec::new(); swap(&mut foo, &mut i.items);
49-
i.items.extend(foo.into_iter().filter_map(|x| self.fold_item(x)));
42+
i.items = i.items.into_iter().filter_map(|x| self.fold_item(x)).collect();
5043
ImplItem(i)
5144
},
5245
VariantItem(i) => {
5346
let i2 = i.clone(); // this clone is small
5447
match i.kind {
5548
StructVariant(mut j) => {
56-
let mut foo = Vec::new(); swap(&mut foo, &mut j.fields);
57-
let num_fields = foo.len();
58-
j.fields.extend(foo.into_iter().filter_map(|x| self.fold_item(x)));
49+
let num_fields = j.fields.len();
50+
j.fields = j.fields.into_iter().filter_map(|x| self.fold_item(x)).collect();
5951
j.fields_stripped |= num_fields != j.fields.len();
6052
VariantItem(Variant {kind: StructVariant(j), ..i2})
6153
},
@@ -78,17 +70,13 @@ pub trait DocFolder : Sized {
7870
}
7971

8072
fn fold_crate(&mut self, mut c: Crate) -> Crate {
81-
c.module = match replace(&mut c.module, None) {
82-
Some(module) => self.fold_item(module), None => None
83-
};
84-
85-
let external_traits = replace(&mut c.external_traits, HashMap::new());
86-
c.external_traits = external_traits.into_iter().map(|(k, mut v)| {
87-
let items = replace(&mut v.items, Vec::new());
88-
v.items = items.into_iter().filter_map(|i| self.fold_item(i))
89-
.collect();
73+
c.module = c.module.and_then(|module| {
74+
self.fold_item(module)
75+
});
76+
c.external_traits = c.external_traits.into_iter().map(|(k, mut v)| {
77+
v.items = v.items.into_iter().filter_map(|i| self.fold_item(i)).collect();
9078
(k, v)
9179
}).collect();
92-
return c;
80+
c
9381
}
9482
}

src/librustdoc/html/render.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ fn init_ids() -> HashMap<String, usize> {
374374
"deref-methods",
375375
"implementations",
376376
"derived_implementations"
377-
].into_iter().map(|id| (String::from(*id), 1)).collect::<HashMap<_, _>>()
377+
].into_iter().map(|id| (String::from(*id), 1)).collect()
378378
}
379379

380380
/// This method resets the local table of used ID attributes. This is typically

src/librustdoc/passes.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,7 @@ impl<'a> fold::DocFolder for ImplStripper<'a> {
243243
pub fn unindent_comments(krate: clean::Crate) -> plugins::PluginResult {
244244
struct CommentCleaner;
245245
impl fold::DocFolder for CommentCleaner {
246-
fn fold_item(&mut self, i: Item) -> Option<Item> {
247-
let mut i = i;
246+
fn fold_item(&mut self, mut i: Item) -> Option<Item> {
248247
let mut avec: Vec<clean::Attribute> = Vec::new();
249248
for attr in &i.attrs {
250249
match attr {
@@ -268,9 +267,8 @@ pub fn unindent_comments(krate: clean::Crate) -> plugins::PluginResult {
268267
pub fn collapse_docs(krate: clean::Crate) -> plugins::PluginResult {
269268
struct Collapser;
270269
impl fold::DocFolder for Collapser {
271-
fn fold_item(&mut self, i: Item) -> Option<Item> {
270+
fn fold_item(&mut self, mut i: Item) -> Option<Item> {
272271
let mut docstr = String::new();
273-
let mut i = i;
274272
for attr in &i.attrs {
275273
if let clean::NameValue(ref x, ref s) = *attr {
276274
if "doc" == *x {

0 commit comments

Comments
 (0)