E0625 - Error codes index
Description: Book listing all Rust error codes

# 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;
    }