Rollup merge of #48026 - Badel2:doc-assoc-const-object-safe, r=nikomatsakis
Document that associated constants prevent a trait from being made into an object Fixes https://github.com/rust-lang/rust/issues/47952 Add a short mention of associated constants to E0038
This commit is contained in:
commit
ccdb320c68
1 changed files with 22 additions and 0 deletions
|
|
@ -256,6 +256,28 @@ trait Foo {
|
|||
}
|
||||
```
|
||||
|
||||
### The trait cannot contain associated constants
|
||||
|
||||
Just like static functions, associated constants aren't stored on the method
|
||||
table. If the trait or any subtrait contain an associated constant, they cannot
|
||||
be made into an object.
|
||||
|
||||
```compile_fail,E0038
|
||||
trait Foo {
|
||||
const X: i32;
|
||||
}
|
||||
|
||||
impl Foo {}
|
||||
```
|
||||
|
||||
A simple workaround is to use a helper method instead:
|
||||
|
||||
```
|
||||
trait Foo {
|
||||
fn x(&self) -> i32;
|
||||
}
|
||||
```
|
||||
|
||||
### The trait cannot use `Self` as a type parameter in the supertrait listing
|
||||
|
||||
This is similar to the second sub-error, but subtler. It happens in situations
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue