Clean up E0375 explanation
This commit is contained in:
parent
abc3073c92
commit
6fba47f66f
1 changed files with 11 additions and 8 deletions
|
@ -1,12 +1,7 @@
|
||||||
A struct with more than one field containing an unsized type cannot implement
|
`CoerceUnsized` was implemented on a struct which contains more than one field
|
||||||
`CoerceUnsized`. This only occurs when you are trying to coerce one of the
|
with an unsized type.
|
||||||
types in your struct to another type in the struct. In this case we try to
|
|
||||||
impl `CoerceUnsized` from `T` to `U` which are both types that the struct
|
|
||||||
takes. An [unsized type][1] is any type that the compiler doesn't know the
|
|
||||||
length or alignment of at compile time. Any struct containing an unsized type
|
|
||||||
is also unsized.
|
|
||||||
|
|
||||||
Example of erroneous code:
|
Erroneous code example:
|
||||||
|
|
||||||
```compile_fail,E0375
|
```compile_fail,E0375
|
||||||
#![feature(coerce_unsized)]
|
#![feature(coerce_unsized)]
|
||||||
|
@ -22,6 +17,14 @@ struct Foo<T: ?Sized, U: ?Sized> {
|
||||||
impl<T, U> CoerceUnsized<Foo<U, T>> for Foo<T, U> {}
|
impl<T, U> CoerceUnsized<Foo<U, T>> for Foo<T, U> {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
A struct with more than one field containing an unsized type cannot implement
|
||||||
|
`CoerceUnsized`. This only occurs when you are trying to coerce one of the
|
||||||
|
types in your struct to another type in the struct. In this case we try to
|
||||||
|
impl `CoerceUnsized` from `T` to `U` which are both types that the struct
|
||||||
|
takes. An [unsized type][1] is any type that the compiler doesn't know the
|
||||||
|
length or alignment of at compile time. Any struct containing an unsized type
|
||||||
|
is also unsized.
|
||||||
|
|
||||||
`CoerceUnsized` only allows for coercion from a structure with a single
|
`CoerceUnsized` only allows for coercion from a structure with a single
|
||||||
unsized type field to another struct with a single unsized type field.
|
unsized type field to another struct with a single unsized type field.
|
||||||
In fact Rust only allows for a struct to have one unsized type in a struct
|
In fact Rust only allows for a struct to have one unsized type in a struct
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue