Instead of using a depth counter and adding "../" to get to the top,
this commit makes rustdoc actually compare the path of what it's
linking from to the path that it's linking to. This makes the resulting
HTML shorter.
Here's a comparison of one of the largest (non-source) files in the
Rust standard library docs (about 4% improvement before gzipping).
$ wc -c struct.Wrapping.old.html struct.Wrapping.new.html
2387389 struct.Wrapping.old.html
2298538 struct.Wrapping.new.html
Most if it can be efficiently gzipped away.
$ wc -c struct.Wrapping.old.html.gz struct.Wrapping.new.html.gz
70679 struct.Wrapping.old.html.gz
70050 struct.Wrapping.new.html.gz
But it also makes a difference in the final DOM size, reducing it from 91MiB to 82MiB.
84 lines
3 KiB
Rust
84 lines
3 KiB
Rust
// @has basic/index.html
|
|
// @has - '//a/@href' 'struct.ThisType.html'
|
|
// @has - '//a/@href' 'struct.ThisType.html#method.this_method'
|
|
// @has - '//a/@href' 'enum.ThisEnum.html'
|
|
// @has - '//a/@href' 'enum.ThisEnum.html#variant.ThisVariant'
|
|
// @has - '//a/@href' 'trait.ThisTrait.html'
|
|
// @has - '//a/@href' 'trait.ThisTrait.html#tymethod.this_associated_method'
|
|
// @has - '//a/@href' 'trait.ThisTrait.html#associatedtype.ThisAssociatedType'
|
|
// @has - '//a/@href' 'trait.ThisTrait.html#associatedconstant.THIS_ASSOCIATED_CONST'
|
|
// @has - '//a/@href' 'trait.ThisTrait.html'
|
|
// @has - '//a/@href' 'type.ThisAlias.html'
|
|
// @has - '//a/@href' 'union.ThisUnion.html'
|
|
// @has - '//a/@href' 'fn.this_function.html'
|
|
// @has - '//a/@href' 'constant.THIS_CONST.html'
|
|
// @has - '//a/@href' 'static.THIS_STATIC.html'
|
|
// @has - '//a/@href' 'macro.this_macro.html'
|
|
// @has - '//a/@href' 'trait.SoAmbiguous.html'
|
|
// @has - '//a/@href' 'fn.SoAmbiguous.html'
|
|
//! In this crate we would like to link to:
|
|
//!
|
|
//! * [`ThisType`](ThisType)
|
|
//! * [`ThisType::this_method`](ThisType::this_method)
|
|
//! * [`ThisEnum`](ThisEnum)
|
|
//! * [`ThisEnum::ThisVariant`](ThisEnum::ThisVariant)
|
|
//! * [`ThisEnum::ThisVariantCtor`](ThisEnum::ThisVariantCtor)
|
|
//! * [`ThisTrait`](ThisTrait)
|
|
//! * [`ThisTrait::this_associated_method`](ThisTrait::this_associated_method)
|
|
//! * [`ThisTrait::ThisAssociatedType`](ThisTrait::ThisAssociatedType)
|
|
//! * [`ThisTrait::THIS_ASSOCIATED_CONST`](ThisTrait::THIS_ASSOCIATED_CONST)
|
|
//! * [`ThisAlias`](ThisAlias)
|
|
//! * [`ThisUnion`](ThisUnion)
|
|
//! * [`this_function`](this_function())
|
|
//! * [`THIS_CONST`](const@THIS_CONST)
|
|
//! * [`THIS_STATIC`](static@THIS_STATIC)
|
|
//! * [`this_macro`](this_macro!)
|
|
//!
|
|
//! In addition, there's some specifics we want to look at. There's [a trait called
|
|
//! SoAmbiguous][ambig-trait], but there's also [a function called SoAmbiguous][ambig-fn] too!
|
|
//! Whatever shall we do?
|
|
//!
|
|
//! [ambig-trait]: trait@SoAmbiguous
|
|
//! [ambig-fn]: SoAmbiguous()
|
|
|
|
#[macro_export]
|
|
macro_rules! this_macro {
|
|
() => {};
|
|
}
|
|
|
|
// @has basic/struct.ThisType.html '//a/@href' 'macro.this_macro.html'
|
|
/// another link to [`this_macro!()`]
|
|
pub struct ThisType;
|
|
|
|
impl ThisType {
|
|
pub fn this_method() {}
|
|
}
|
|
pub enum ThisEnum { ThisVariant, ThisVariantCtor(u32), }
|
|
pub trait ThisTrait {
|
|
type ThisAssociatedType;
|
|
const THIS_ASSOCIATED_CONST: u8;
|
|
fn this_associated_method();
|
|
}
|
|
pub type ThisAlias = Result<(), ()>;
|
|
pub union ThisUnion { this_field: usize, }
|
|
|
|
pub fn this_function() {}
|
|
pub const THIS_CONST: usize = 5usize;
|
|
pub static THIS_STATIC: usize = 5usize;
|
|
|
|
pub trait SoAmbiguous {}
|
|
|
|
#[allow(nonstandard_style)]
|
|
pub fn SoAmbiguous() {}
|
|
|
|
|
|
// @has basic/struct.SomeOtherType.html '//a/@href' 'struct.ThisType.html'
|
|
// @has - '//a/@href' 'struct.ThisType.html#method.this_method'
|
|
// @has - '//a/@href' 'enum.ThisEnum.html'
|
|
// @has - '//a/@href' 'enum.ThisEnum.html#variant.ThisVariant'
|
|
/// Shortcut links for:
|
|
/// * [`ThisType`]
|
|
/// * [`ThisType::this_method`]
|
|
/// * [ThisEnum]
|
|
/// * [ThisEnum::ThisVariant]
|
|
pub struct SomeOtherType;
|