Error code E0796

Note: this error code is no longer emitted by the compiler.

You have created a reference to a mutable static.

Erroneous code example:

#![allow(unused)]
fn main() {
static mut X: i32 = 23;
fn work() {
  let _val = unsafe { X };
}
let x_ref = unsafe { &mut X };
work();
// The next line has Undefined Behavior!
// `x_ref` is a mutable reference and allows no aliases,
// but `work` has been reading the reference between
// the moment `x_ref` was created and when it was used.
// This violates the uniqueness of `x_ref`.
*x_ref = 42;
}

A reference to a mutable static has lifetime 'static. This is very dangerous as it is easy to accidentally overlap the lifetime of that reference with other, conflicting accesses to the same static.

References to mutable statics are a hard error in the 2024 edition.