Rust errors / Ownership and borrowing
Rust compiler error · checked with rustc 1.99.0
Rust error E0712: thread-local variable borrowed past end of function
What it meansA borrow of a thread-local variable was made inside a function which outlived the lifetime of the function.
What rustc prints
error[E0712]: thread-local variable borrowed past end of function
--> main.rs:7:13
|
7 | let a = &FOO; // error: thread-local variable borrowed past end of function
| ^^^^ thread-local variables cannot be borrowed beyond the end of the function
...
12 | }
| - end of enclosing function is hereReal output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.
The compiler team's explanation
A borrow of a thread-local variable was made inside a function which outlived the lifetime of the function.
Erroneous code example:
#![feature(thread_local)]
#[thread_local]
static FOO: u8 = 3;
fn main() {
let a = &FOO; // error: thread-local variable borrowed past end of function
std::thread::spawn(move || {
println!("{}", a);
});
}From rustc --explain E0712 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
- E0382borrow of moved value
- E0499cannot borrow as mutable more than once at a time
- E0502cannot borrow as mutable because it is also borrowed as immutable
- E0106missing lifetime specifier
- E0657`impl Trait` cannot capture higher-ranked lifetime from outer `impl Trait`
- E0700hidden type for `impl Trait<'y>` captures lifetime that does not appear in bounds
- E0713borrow may still be in use when destructor runs
- E0716temporary value dropped while borrowed
Up next
Often hit nextE0382: borrow of moved valueA related error from the same family.Read it next →Did this answer your question?