Clarify effect of orphan rule changes on From/Into
Updated documentation for `std::convert` and `std::convert::From` to reflect changes to orphan rule in Rust 1.41. It should no longer be necessary to implement Into directly, unless targeting an older version.
This commit is contained in:
parent
f315c35a77
commit
d2fe7a7c76
@ -18,8 +18,9 @@
|
||||
//! [`TryFrom<T>`][`TryFrom`] rather than [`Into<U>`][`Into`] or [`TryInto<U>`][`TryInto`],
|
||||
//! as [`From`] and [`TryFrom`] provide greater flexibility and offer
|
||||
//! equivalent [`Into`] or [`TryInto`] implementations for free, thanks to a
|
||||
//! blanket implementation in the standard library. Only implement [`Into`] or [`TryInto`]
|
||||
//! when a conversion to a type outside the current crate is required.
|
||||
//! blanket implementation in the standard library. When targeting a version prior to Rust 1.41, it
|
||||
//! may be necessary to implement [`Into`] or [`TryInto`] directly when converting to a type
|
||||
//! outside the current crate.
|
||||
//!
|
||||
//! # Generic Implementations
|
||||
//!
|
||||
@ -298,8 +299,10 @@ pub trait Into<T>: Sized {
|
||||
/// because implementing `From` automatically provides one with an implementation of [`Into`]
|
||||
/// thanks to the blanket implementation in the standard library.
|
||||
///
|
||||
/// Only implement [`Into`] if a conversion to a type outside the current crate is required.
|
||||
/// `From` cannot do these type of conversions because of Rust's orphaning rules.
|
||||
/// Only implement [`Into`] when targeting a version prior to Rust 1.41 and converting to a type
|
||||
/// outside the current crate.
|
||||
/// `From` was not able to do these types of conversions in earlier versions because of Rust's
|
||||
/// orphaning rules.
|
||||
/// See [`Into`] for more details.
|
||||
///
|
||||
/// Prefer using [`Into`] over using `From` when specifying trait bounds on a generic function.
|
||||
|
Loading…
Reference in New Issue
Block a user