3131//! `into` themselves and `from` themselves
3232//!
3333//! See each trait for usage examples.
34- //!
35- //! [`Into`]: trait.Into.html
36- //! [`From`]: trait.From.html
37- //! [`TryFrom`]: trait.TryFrom.html
38- //! [`TryInto`]: trait.TryInto.html
39- //! [`AsRef`]: trait.AsRef.html
40- //! [`AsMut`]: trait.AsMut.html
4134
4235#![ stable( feature = "rust1" , since = "1.0.0" ) ]
4336
@@ -141,13 +134,11 @@ pub const fn identity<T>(x: T) -> T {
141134/// want to accept all references that can be converted to [`&str`] as an argument.
142135/// Since both [`String`] and [`&str`] implement `AsRef<str>` we can accept both as input argument.
143136///
144- /// [`Option<T>`]: ../../std/option/enum.Option.html
145- /// [`Result<T, E>`]: ../../std/result/enum.Result.html
146- /// [`Borrow`]: ../../std/borrow/trait.Borrow.html
147- /// [`Hash`]: ../../std/hash/trait.Hash.html
148- /// [`Eq`]: ../../std/cmp/trait.Eq.html
149- /// [`Ord`]: ../../std/cmp/trait.Ord.html
150- /// [`&str`]: ../../std/primitive.str.html
137+ /// [`Option<T>`]: Option
138+ /// [`Result<T, E>`]: Result
139+ /// [`Borrow`]: crate::borrow::Borrow
140+ /// [`Eq`]: crate::cmp::Eq
141+ /// [`Ord`]: crate::cmp::Ord
151142/// [`String`]: ../../std/string/struct.String.html
152143///
153144/// ```
@@ -177,8 +168,8 @@ pub trait AsRef<T: ?Sized> {
177168/// **Note: This trait must not fail**. If the conversion can fail, use a
178169/// dedicated method which returns an [`Option<T>`] or a [`Result<T, E>`].
179170///
180- /// [`Option<T>`]: ../../std/option/enum. Option.html
181- /// [`Result<T, E>`]: ../../std/result/enum. Result.html
171+ /// [`Option<T>`]: Option
172+ /// [`Result<T, E>`]: Result
182173///
183174/// # Generic Implementations
184175///
@@ -278,12 +269,9 @@ pub trait AsMut<T: ?Sized> {
278269/// is_hello(s);
279270/// ```
280271///
281- /// [`TryInto`]: trait.TryInto.html
282- /// [`Option<T>`]: ../../std/option/enum.Option.html
283- /// [`Result<T, E>`]: ../../std/result/enum.Result.html
272+ /// [`Option<T>`]: Option
273+ /// [`Result<T, E>`]: Result
284274/// [`String`]: ../../std/string/struct.String.html
285- /// [`From`]: trait.From.html
286- /// [`Into`]: trait.Into.html
287275/// [`Vec`]: ../../std/vec/struct.Vec.html
288276#[ stable( feature = "rust1" , since = "1.0.0" ) ]
289277pub trait Into < T > : Sized {
@@ -370,12 +358,10 @@ pub trait Into<T>: Sized {
370358/// }
371359/// ```
372360///
373- /// [`TryFrom`]: trait.TryFrom.html
374- /// [`Option<T>`]: ../../std/option/enum.Option.html
375- /// [`Result<T, E>`]: ../../std/result/enum.Result.html
361+ /// [`Option<T>`]: Option
362+ /// [`Result<T, E>`]: Result
376363/// [`String`]: ../../std/string/struct.String.html
377- /// [`Into`]: trait.Into.html
378- /// [`from`]: trait.From.html#tymethod.from
364+ /// [`from`]: From::from
379365/// [book]: ../../book/ch09-00-error-handling.html
380366#[ rustc_diagnostic_item = "from_trait" ]
381367#[ stable( feature = "rust1" , since = "1.0.0" ) ]
@@ -404,9 +390,6 @@ pub trait From<T>: Sized {
404390///
405391/// This suffers the same restrictions and reasoning as implementing
406392/// [`Into`], see there for details.
407- ///
408- /// [`TryFrom`]: trait.TryFrom.html
409- /// [`Into`]: trait.Into.html
410393#[ stable( feature = "try_from" , since = "1.34.0" ) ]
411394pub trait TryInto < T > : Sized {
412395 /// The type returned in the event of a conversion error.
@@ -485,11 +468,9 @@ pub trait TryInto<T>: Sized {
485468/// assert!(try_successful_smaller_number.is_ok());
486469/// ```
487470///
488- /// [`try_from`]: trait.TryFrom.html#tymethod.try_from
489- /// [`TryInto`]: trait.TryInto.html
490- /// [`i32::MAX`]: ../../std/i32/constant.MAX.html
471+ /// [`i32::MAX`]: crate::i32::MAX
472+ /// [`try_from`]: TryFrom::try_from
491473/// [`!`]: ../../std/primitive.never.html
492- /// [`Infallible`]: enum.Infallible.html
493474#[ stable( feature = "try_from" , since = "1.34.0" ) ]
494475pub trait TryFrom < T > : Sized {
495476 /// The type returned in the event of a conversion error.
@@ -676,7 +657,6 @@ impl AsRef<str> for str {
676657///
677658/// … and eventually deprecate `Infallible`.
678659///
679- ///
680660/// However there is one case where `!` syntax can be used
681661/// before `!` is stabilized as a full-fledged type: in the position of a function’s return type.
682662/// Specifically, it is possible implementations for two different function pointer types:
@@ -692,10 +672,6 @@ impl AsRef<str> for str {
692672/// the two `impl`s will start to overlap
693673/// and therefore will be disallowed by the language’s trait coherence rules.
694674///
695- /// [`Ok`]: ../result/enum.Result.html#variant.Ok
696- /// [`Result`]: ../result/enum.Result.html
697- /// [`TryFrom`]: trait.TryFrom.html
698- /// [`Into`]: trait.Into.html
699675/// [never]: ../../std/primitive.never.html
700676#[ stable( feature = "convert_infallible" , since = "1.34.0" ) ]
701677#[ derive( Copy ) ]
0 commit comments