45 lines
2.0 KiB
Rust
45 lines
2.0 KiB
Rust
use std::sync::Mutex;
|
|
|
|
// Globale Konstanten, können außerhalb von Funktionen deklariert werden
|
|
const ANTWORT_AUF_ALLES: i32 = 42;
|
|
// Const sind echte Konstanten, die nicht verändert werden könne und auch nicht überschattet werden können
|
|
// Dies haben keinen festen Speicherplatz, sondern werden überall eingebettet, wo diese verwendet werden
|
|
// Es muss explizit geschrieben werden, welchen Typ die Konstante hat
|
|
|
|
static mut PRAESENTIERER: &str = "Semih";
|
|
// Bei static ist es anders, diese existieren genau einmal im Speicher und haben somit eine feste Speicheradresse
|
|
// Können mit mut versehen werden, diese können dann verändert werden in unsafe Blöcken
|
|
// Dies sollte eher vermieden werden, um veränderbare static Konstanten zu erzeugen sollten Mutex verwendet werden
|
|
static COUNTER: Mutex<u32> = Mutex::new(0); // Nun ist es sicher dank Mutex
|
|
|
|
fn main() {
|
|
println!("The answer to life, the universe, and everything = {ANTWORT_AUF_ALLES}");
|
|
// Konstanten können auch in Funktionen deklariert werden
|
|
const WITZIGES: i8 = 24;
|
|
static WITZIGERES: i8 = 25;
|
|
println!("Ich weiß noch was witzigeres als {WITZIGES}\nNa was denn?\n{WITZIGERES} hahahaha");
|
|
|
|
|
|
// Da static mut unsafe ist, können sie nur in solchen unsafe Blöcken verändert und gelesen werden, anders nicht
|
|
unsafe {
|
|
println!("Aktueller Präsentierer ist: {PRAESENTIERER}");
|
|
PRAESENTIERER = "Lukas";
|
|
println!("Der nächste Präsentierer ist: {PRAESENTIERER}");
|
|
}
|
|
|
|
// Das hier in Advanced
|
|
{
|
|
// Hier erstellen wir eine veränderliche Variable, die wir dannn locken, dann unwrappen, und dann um eins erhöhen können
|
|
// Für die Basics ist das zu komplex zum erklären, wir nehmen das mal so hin
|
|
// Man muss es in dem Fall nicht nochmal unlocken, dass geschieht beim Verlassen des Blocks automatisch
|
|
let mut c = COUNTER.lock().unwrap();
|
|
println!("{c}");
|
|
*c += 1;
|
|
}
|
|
|
|
{
|
|
let c = COUNTER.lock().unwrap();
|
|
println!("{c}");
|
|
}
|
|
}
|