Rollup merge of #87715 - bhgomes:long-explanation-E0625, r=GuillaumeGomez
Add long error explanation for E0625 For #61137.
This commit is contained in:
28
compiler/rustc_error_codes/src/error_codes/E0625.md
Normal file
28
compiler/rustc_error_codes/src/error_codes/E0625.md
Normal file
@@ -0,0 +1,28 @@
|
||||
A compile-time const variable is referring to a thread-local static variable.
|
||||
|
||||
Erroneous code example:
|
||||
|
||||
```compile_fail,E0625
|
||||
#![feature(thread_local)]
|
||||
|
||||
#[thread_local]
|
||||
static X: usize = 12;
|
||||
|
||||
const Y: usize = 2 * X;
|
||||
```
|
||||
|
||||
Static and const variables can refer to other const variables but a const
|
||||
variable cannot refer to a thread-local static variable. In this example,
|
||||
`Y` cannot refer to `X`. To fix this, the value can be extracted as a const
|
||||
and then used:
|
||||
|
||||
```
|
||||
#![feature(thread_local)]
|
||||
|
||||
const C: usize = 12;
|
||||
|
||||
#[thread_local]
|
||||
static X: usize = C;
|
||||
|
||||
const Y: usize = 2 * C;
|
||||
```
|
||||
Reference in New Issue
Block a user