diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs index ebccb1188cc75..02ba4aabc9919 100644 --- a/src/librustdoc/html/format.rs +++ b/src/librustdoc/html/format.rs @@ -478,7 +478,25 @@ impl fmt::Show for clean::Type { Some(ref l) => format!("{} ", *l), _ => "".to_string(), }; - write!(f, "&{}{}{}", lt, MutableSpace(mutability), **ty) + let m = MutableSpace(mutability); + match **ty { + clean::Vector(ref bt) => { // BorrowedRef{ ... Vector(T) } is &[T] + match **bt { + clean::Generic(_) => + primitive_link(f, clean::Slice, + format!("&{}{}[{}]", lt, m, **bt).as_slice()), + _ => { + try!(primitive_link(f, clean::Slice, + format!("&{}{}[", lt, m).as_slice())); + try!(write!(f, "{}", **bt)); + primitive_link(f, clean::Slice, "]") + } + } + } + _ => { + write!(f, "&{}{}{}", lt, m, **ty) + } + } } clean::Unique(..) => { fail!("should have been cleaned")