rustdoc: Use unboxed closure sugar
This unfortunately leaves sugaring Fn/FnMut/FnOnce on cross-crate re-exports for future work. cc #19909
This commit is contained in:
@@ -171,6 +171,58 @@ impl fmt::Show for clean::TyParamBound {
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Show for clean::PathParameters {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
match *self {
|
||||
clean::PathParameters::AngleBracketed { ref lifetimes, ref types } => {
|
||||
if lifetimes.len() > 0 || types.len() > 0 {
|
||||
try!(f.write("<".as_bytes()));
|
||||
let mut comma = false;
|
||||
for lifetime in lifetimes.iter() {
|
||||
if comma {
|
||||
try!(f.write(", ".as_bytes()));
|
||||
}
|
||||
comma = true;
|
||||
try!(write!(f, "{}", *lifetime));
|
||||
}
|
||||
for ty in types.iter() {
|
||||
if comma {
|
||||
try!(f.write(", ".as_bytes()));
|
||||
}
|
||||
comma = true;
|
||||
try!(write!(f, "{}", *ty));
|
||||
}
|
||||
try!(f.write(">".as_bytes()));
|
||||
}
|
||||
}
|
||||
clean::PathParameters::Parenthesized { ref inputs, ref output } => {
|
||||
try!(f.write("(".as_bytes()));
|
||||
let mut comma = false;
|
||||
for ty in inputs.iter() {
|
||||
if comma {
|
||||
try!(f.write(", ".as_bytes()));
|
||||
}
|
||||
comma = true;
|
||||
try!(write!(f, "{}", *ty));
|
||||
}
|
||||
try!(f.write(")".as_bytes()));
|
||||
if let Some(ref ty) = *output {
|
||||
try!(f.write(" -> ".as_bytes()));
|
||||
try!(write!(f, "{}", ty));
|
||||
}
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Show for clean::PathSegment {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
try!(f.write(self.name.as_bytes()));
|
||||
write!(f, "{}", self.params)
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Show for clean::Path {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
if self.global {
|
||||
@@ -181,27 +233,7 @@ impl fmt::Show for clean::Path {
|
||||
if i > 0 {
|
||||
try!(f.write("::".as_bytes()))
|
||||
}
|
||||
try!(f.write(seg.name.as_bytes()));
|
||||
|
||||
if seg.lifetimes.len() > 0 || seg.types.len() > 0 {
|
||||
try!(f.write("<".as_bytes()));
|
||||
let mut comma = false;
|
||||
for lifetime in seg.lifetimes.iter() {
|
||||
if comma {
|
||||
try!(f.write(", ".as_bytes()));
|
||||
}
|
||||
comma = true;
|
||||
try!(write!(f, "{}", *lifetime));
|
||||
}
|
||||
for ty in seg.types.iter() {
|
||||
if comma {
|
||||
try!(f.write(", ".as_bytes()));
|
||||
}
|
||||
comma = true;
|
||||
try!(write!(f, "{}", *ty));
|
||||
}
|
||||
try!(f.write(">".as_bytes()));
|
||||
}
|
||||
try!(write!(f, "{}", seg));
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
@@ -243,23 +275,8 @@ fn path<F, G>(w: &mut fmt::Formatter,
|
||||
G: FnOnce(&render::Cache) -> Option<(Vec<String>, ItemType)>,
|
||||
{
|
||||
// The generics will get written to both the title and link
|
||||
let mut generics = String::new();
|
||||
let last = path.segments.last().unwrap();
|
||||
if last.lifetimes.len() > 0 || last.types.len() > 0 {
|
||||
let mut counter = 0u;
|
||||
generics.push_str("<");
|
||||
for lifetime in last.lifetimes.iter() {
|
||||
if counter > 0 { generics.push_str(", "); }
|
||||
counter += 1;
|
||||
generics.push_str(format!("{}", *lifetime).as_slice());
|
||||
}
|
||||
for ty in last.types.iter() {
|
||||
if counter > 0 { generics.push_str(", "); }
|
||||
counter += 1;
|
||||
generics.push_str(format!("{}", *ty).as_slice());
|
||||
}
|
||||
generics.push_str(">");
|
||||
}
|
||||
let generics = format!("{}", last.params);
|
||||
|
||||
let loc = CURRENT_LOCATION_KEY.with(|l| l.borrow().clone());
|
||||
let cache = cache();
|
||||
@@ -660,8 +677,10 @@ impl fmt::Show for clean::ViewListIdent {
|
||||
global: false,
|
||||
segments: vec!(clean::PathSegment {
|
||||
name: self.name.clone(),
|
||||
lifetimes: Vec::new(),
|
||||
types: Vec::new(),
|
||||
params: clean::PathParameters::AngleBracketed {
|
||||
lifetimes: Vec::new(),
|
||||
types: Vec::new(),
|
||||
}
|
||||
})
|
||||
};
|
||||
resolved_path(f, did, &path, false)
|
||||
|
||||
Reference in New Issue
Block a user