mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-05 03:23:25 +00:00
Reword description of automatic impls of Unsize
.
The existing documentation felt a little unhelpfully concise, so this change tries to improve it by using longer sentences, each of which specifies which kinds of types it applies to as early as possible. In particular, the third item starts with “Structs ...” instead of saying “Foo is a struct” later. Also, the previous list items “Only the last field has a type involving `T`” and “`T` is not part of the type of any other fields” are, as far as I see, redundant with each other, so I removed the latter.
This commit is contained in:
parent
ae90dcf020
commit
07988bb8a1
@ -99,17 +99,15 @@ pub trait Sized {
|
||||
/// `Unsize<dyn fmt::Debug>`.
|
||||
///
|
||||
/// All implementations of `Unsize` are provided automatically by the compiler.
|
||||
/// Those implementations are:
|
||||
///
|
||||
/// `Unsize` is implemented for:
|
||||
///
|
||||
/// - `[T; N]` is `Unsize<[T]>`
|
||||
/// - `T` is `Unsize<dyn Trait>` when `T: Trait`
|
||||
/// - `Foo<..., T, ...>` is `Unsize<Foo<..., U, ...>>` if:
|
||||
/// - `T: Unsize<U>`
|
||||
/// - Foo is a struct
|
||||
/// - Only the last field of `Foo` has a type involving `T`
|
||||
/// - `T` is not part of the type of any other fields
|
||||
/// - `Bar<T>: Unsize<Bar<U>>`, if the last field of `Foo` has type `Bar<T>`
|
||||
/// - Arrays `[T; N]` implement `Unsize<[T]>`.
|
||||
/// - Types implementing a trait `Trait` also implement `Unsize<dyn Trait>`.
|
||||
/// - Structs `Foo<..., T, ...>` implement `Unsize<Foo<..., U, ...>>` if all of these conditions
|
||||
/// are met:
|
||||
/// - `T: Unsize<U>`.
|
||||
/// - Only the last field of `Foo` has a type involving `T`.
|
||||
/// - `Bar<T>: Unsize<Bar<U>>`, where `Bar<T>` stands for the actual type of that last field.
|
||||
///
|
||||
/// `Unsize` is used along with [`ops::CoerceUnsized`] to allow
|
||||
/// "user-defined" containers such as [`Rc`] to contain dynamically-sized
|
||||
|
Loading…
Reference in New Issue
Block a user