`]: ../std/boxed/struct.Box.html
-[`Clone`]: ../std/clone/trait.Clone.html
-[`Copy`]: ../std/marker/trait.Copy.html
-[`Deref`]: ../std/ops/trait.Deref.html
-[`DerefMut`]: ../std/ops/trait.DerefMut.html
-[`Drop`]: ../std/ops/trait.Drop.html
-[`Pin`]: ../std/pin/struct.Pin.html
-[`Rc`]: ../std/rc/struct.Rc.html
-[`RefUnwindSafe`]: ../std/panic/trait.RefUnwindSafe.html
-[`Send`]: ../std/marker/trait.Send.html
-[`Sized`]: ../std/marker/trait.Sized.html
-[`std::cell::UnsafeCell`]: ../std/cell/struct.UnsafeCell.html
-[`std::cmp`]: ../std/cmp/index.html
-[`std::marker::PhantomData`]: ../std/marker/struct.PhantomData.html
-[`std::ops`]: ../std/ops/index.html
-[`Termination`]: ../std/process/trait.Termination.html
-[`UnwindSafe`]: ../std/panic/trait.UnwindSafe.html
-[`Sync`]: ../std/marker/trait.Sync.html
-[`Unpin`]: ../std/marker/trait.Unpin.html
+[`Arc`]: std::sync::Arc
+[`Deref`]: std::ops::Deref
+[`DerefMut`]: std::ops::DerefMut
+[`Pin`]: std::pin::Pin
+[`Rc`]: std::rc::Rc
+[`RefUnwindSafe`]: std::panic::RefUnwindSafe
+[`Termination`]: std::process::Termination
+[`UnwindSafe`]: std::panic::UnwindSafe
+[`Unpin`]: std::marker::Unpin
[Arrays]: types/array.md
[associated types]: items/associated-items.md#associated-types
@@ -181,7 +170,7 @@ These implicit `Sized` bounds may be relaxed by using the special `?Sized` bound
[orphan rules]: items/implementations.md#trait-implementation-coherence
[`static` items]: items/static-items.md
[test functions]: attributes/testing.md#the-test-attribute
-[the standard library]: ../std/index.html
+[the standard library]: std
[trait object]: types/trait-object.md
[Tuples]: types/tuple.md
[Type parameters]: types/parameters.md
diff --git a/src/tokens.md b/src/tokens.md
index 1c50ed11f..aeafe4b6d 100644
--- a/src/tokens.md
+++ b/src/tokens.md
@@ -336,7 +336,7 @@ followed by the character `U+0022`. If the character `U+0022` is present within
the literal, it must be _escaped_ by a preceding `U+005C` (`\`) character.
Alternatively, a C string literal can be a _raw C string literal_, defined below.
-[CStr]: ../core/ffi/struct.CStr.html
+[CStr]: core::ffi::CStr
C strings are implicitly terminated by byte `0x00`, so the C string literal
`c""` is equivalent to manually constructing a `&CStr` from the byte string
diff --git a/src/type-coercions.md b/src/type-coercions.md
index f1016b19b..7d254f4e7 100644
--- a/src/type-coercions.md
+++ b/src/type-coercions.md
@@ -271,6 +271,6 @@ precisely.
[subtype]: subtyping.md
[object safe]: items/traits.md#object-safety
[type cast operator]: expressions/operator-expr.md#type-cast-expressions
-[`Unsize`]: ../std/marker/trait.Unsize.html
-[`CoerceUnsized`]: ../std/ops/trait.CoerceUnsized.html
+[`Unsize`]: std::marker::Unsize
+[`CoerceUnsized`]: std::ops::CoerceUnsized
[method-call expressions]: expressions/method-call-expr.md
diff --git a/src/type-layout.md b/src/type-layout.md
index c53e9d097..8b1a689d8 100644
--- a/src/type-layout.md
+++ b/src/type-layout.md
@@ -600,12 +600,12 @@ primitive field will have the ABI of the primitive field.
Because this representation delegates type layout to another type, it cannot be
used with any other representation.
-[`align_of_val`]: ../std/mem/fn.align_of_val.html
-[`size_of_val`]: ../std/mem/fn.size_of_val.html
-[`align_of`]: ../std/mem/fn.align_of.html
-[`size_of`]: ../std/mem/fn.size_of.html
-[`Sized`]: ../std/marker/trait.Sized.html
-[`Copy`]: ../std/marker/trait.Copy.html
+[`align_of_val`]: std::mem::align_of_val
+[`size_of_val`]: std::mem::size_of_val
+[`align_of`]: std::mem::align_of
+[`size_of`]: std::mem::size_of
+[`Sized`]: std::marker::Sized
+[`Copy`]: std::marker::Copy
[dynamically sized types]: dynamically-sized-types.md
[field-less enums]: items/enumerations.md#field-less-enum
[enumerations]: items/enumerations.md
@@ -618,4 +618,4 @@ used with any other representation.
[primitive representations]: #primitive-representations
[structs]: items/structs.md
[`transparent`]: #the-transparent-representation
-[`Layout`]: ../std/alloc/struct.Layout.html
+[`Layout`]: std::alloc::Layout
diff --git a/src/types/array.md b/src/types/array.md
index 88ea8634c..167954bfe 100644
--- a/src/types/array.md
+++ b/src/types/array.md
@@ -26,6 +26,5 @@ always bounds-checked in safe methods and operators.
[_Expression_]: ../expressions.md
[_Type_]: ../types.md#type-expressions
-[`Vec`]: ../../std/vec/struct.Vec.html
[`usize`]: numeric.md#machine-dependent-integer-types
[constant expression]: ../const_eval.md#constant-expressions
diff --git a/src/types/boolean.md b/src/types/boolean.md
index 7ea99d185..a0c07101f 100644
--- a/src/types/boolean.md
+++ b/src/types/boolean.md
@@ -30,7 +30,7 @@ Like all primitives, the boolean type [implements][p-impl] the
[traits][p-traits] [`Clone`][p-clone], [`Copy`][p-copy], [`Sized`][p-sized],
[`Send`][p-send], and [`Sync`][p-sync].
-> **Note**: See the [standard library docs][std] for library operations.
+> **Note**: See the [standard library docs](bool) for library operations.
## Operations on boolean values
@@ -119,6 +119,5 @@ are invalid `bool`s, the inverse is not always sound).
[p-sync]: ../special-types-and-traits.md#sync
[p-traits]: ../items/traits.md
[size and alignment]: ../type-layout.md#size-and-alignment
-[std]: ../../std/primitive.bool.html
[undefined behavior]: ../behavior-considered-undefined.md
[while expressions]: ../expressions/loop-expr.md#predicate-loops
diff --git a/src/types/closure.md b/src/types/closure.md
index eecdb038f..f93537819 100644
--- a/src/types/closure.md
+++ b/src/types/closure.md
@@ -170,9 +170,6 @@ Because captures are often by reference, the following general rules arise:
[`Clone`]: ../special-types-and-traits.md#clone
[`Copy`]: ../special-types-and-traits.md#copy
-[`FnMut`]: ../../std/ops/trait.FnMut.html
-[`FnOnce`]: ../../std/ops/trait.FnOnce.html
-[`Fn`]: ../../std/ops/trait.Fn.html
[`Send`]: ../special-types-and-traits.md#send
[`Sized`]: ../special-types-and-traits.md#sized
[`Sync`]: ../special-types-and-traits.md#sync
diff --git a/src/types/function-item.md b/src/types/function-item.md
index c8088e48c..3221f3e2b 100644
--- a/src/types/function-item.md
+++ b/src/types/function-item.md
@@ -48,9 +48,6 @@ All function items implement [`Fn`], [`FnMut`], [`FnOnce`], [`Copy`],
[`Clone`]: ../special-types-and-traits.md#clone
[`Copy`]: ../special-types-and-traits.md#copy
-[`FnMut`]: ../../std/ops/trait.FnMut.html
-[`FnOnce`]: ../../std/ops/trait.FnOnce.html
-[`Fn`]: ../../std/ops/trait.Fn.html
[`Send`]: ../special-types-and-traits.md#send
[`Sync`]: ../special-types-and-traits.md#sync
[coercion]: ../type-coercions.md
diff --git a/src/types/pointer.md b/src/types/pointer.md
index cbbf356e8..a1ec509c3 100644
--- a/src/types/pointer.md
+++ b/src/types/pointer.md
@@ -60,8 +60,6 @@ For thin raw pointers (i.e., for `P = *const T` or `P = *mut T` for `T: Sized`),
the inverse direction (transmuting from an integer or array of integers to `P`) is always valid.
However, the pointer produced via such a transmutation may not be dereferenced (not even if `T` has size zero).
-[`core::ptr::addr_of!`]: ../../core/ptr/macro.addr_of.html
-[`core::ptr::addr_of_mut!`]: ../../core/ptr/macro.addr_of_mut.html
[Interior mutability]: ../interior-mutability.md
[_Lifetime_]: ../trait-bounds.md
[_TypeNoBounds_]: ../types.md#type-expressions
diff --git a/src/types/union.md b/src/types/union.md
index 326e720c6..7a2f037e8 100644
--- a/src/types/union.md
+++ b/src/types/union.md
@@ -15,5 +15,4 @@ The memory layout of a `union` is undefined by default (in particular, fields do
fix a layout.
[`Copy`]: ../special-types-and-traits.md#copy
-[`ManuallyDrop`]: ../../std/mem/struct.ManuallyDrop.html
[item]: ../items/unions.md
diff --git a/src/unsafe-keyword.md b/src/unsafe-keyword.md
index df68a74cc..175a5e83d 100644
--- a/src/unsafe-keyword.md
+++ b/src/unsafe-keyword.md
@@ -54,7 +54,7 @@ By writing `unsafe impl`, the programmer states that they have taken care of sat
Unsafe trait implementations are the logical dual to unsafe traits: where unsafe traits define a proof obligation that implementations must uphold, unsafe implementations state that all relevant proof obligations have been discharged.
[keyword]: ../std/keyword.unsafe.html
-[`get_unchecked`]: ../std/primitive.slice.html#method.get_unchecked
+[`get_unchecked`]: slice::get_unchecked
[`unsafe_op_in_unsafe_fn`]: ../rustc/lints/listing/allowed-by-default.html#unsafe-op-in-unsafe-fn
## Unsafe external blocks (`unsafe extern`)