Content-Length: 13303 | pFad | https://doc.rust-lang.org/reference/../../std/../error_codes/./E0764.html

E0764 - Error codes index

Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Error code E0764

A mutable reference was used in a constant.

Erroneous code example:

fn main() {
    const OH_NO: &'static mut usize = &mut 1; // error!
}

Mutable references (&mut) can only be used in constant functions, not statics or constants. This limitation exists to prevent the creation of constants that have a mutable reference in their final value. If you had a constant of &mut i32 type, you could modify the value through that reference, making the constant essentially mutable.

While there could be a more fine-grained scheme in the future that allows mutable references if they are not "leaked" to the final value, a more conservative approach was chosen for now. const fn do not have this problem, as the borrow checker will prevent the const fn from returning new mutable references.

Remember: you cannot use a function call inside a constant or static. However, you can totally use it in constant functions:

const fn foo(x: usize) -> usize {
    let mut y = 1;
    let z = &mut y;
    *z += x;
    y
}

fn main() {
    const FOO: usize = foo(10); // ok!
}








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: https://doc.rust-lang.org/reference/../../std/../error_codes/./E0764.html

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy