Rust errors / Ownership and borrowing
Rust compiler error · checked with rustc 1.99.0
Rust error E0745: cannot take address of a temporary
What it meansThe address of temporary value was taken.
What rustc prints
error[E0745]: cannot take address of a temporary
--> main.rs:2:26
|
2 | let ptr = &raw const 2; // error!
| ^ temporary valueReal 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
The address of temporary value was taken.
Erroneous code example:
fn temp_address() {
let ptr = &raw const 2; // error!
}
In this example, 2 is destroyed right after the assignment, which means that ptr now points to an unavailable location.
To avoid this error, first bind the temporary to a named local variable:
fn temp_address() {
let val = 2;
let ptr = &raw const val; // ok!
}From rustc --explain E0745 (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
- E0716temporary value dropped while borrowed
- E0726implicit elided lifetime not allowed here
- E0747type provided when a lifetime was expected
- E0764mutable borrows of temporaries that have their lifetime extended until the end of the program are not allowed
Up next
Often hit nextE0382: borrow of moved valueA related error from the same family.Read it next →Did this answer your question?