1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-04-22 07:47:44 +02:00
comprehensive-rust/src/unsafe/mutable-static-variables.md

29 lines
553 B
Markdown
Raw Normal View History

2022-12-21 16:36:30 +01:00
# Mutable Static Variables
It is safe to read an immutable static variable:
```rust,editable
static HELLO_WORLD: &str = "Hello, world!";
fn main() {
2023-01-17 14:25:33 +00:00
println!("HELLO_WORLD: {}", HELLO_WORLD);
2022-12-21 16:36:30 +01:00
}
```
However, since data races can occur, it is unsafe to read and write mutable
static variables:
```rust,editable
static mut COUNTER: u32 = 0;
fn add_to_counter(inc: u32) {
unsafe { COUNTER += inc; } // Potential data race!
}
fn main() {
add_to_counter(42);
unsafe { println!("COUNTER: {}", COUNTER); } // Potential data race!
}
```