| #### Note: this error code is no longer emitted by the compiler. |
| |
| You have created a reference to a mutable static. |
| |
| Erroneous code example: |
| |
| ``` |
| 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. |