Error code E0625
A compile-time const variable is referring to a thread-local static variable.
Erroneous code example:
#![allow(unused)] #![feature(thread_local)] fn main() { #[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:
#![allow(unused)] #![feature(thread_local)] fn main() { const C: usize = 12; #[thread_local] static X: usize = C; const Y: usize = 2 * C; }