Skip to content

Commit

Permalink
Rollup merge of rust-lang#48026 - Badel2:doc-assoc-const-object-safe,…
Browse files Browse the repository at this point in the history
… r=nikomatsakis

Document that associated constants prevent a trait from being made into an object

Fixes rust-lang#47952

Add a short mention of associated constants to E0038
  • Loading branch information
kennytm authored Feb 6, 2018
2 parents 3373f65 + 498ef20 commit ccdb320
Showing 1 changed file with 22 additions and 0 deletions.
22 changes: 22 additions & 0 deletions src/librustc/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit ccdb320

Please sign in to comment.