fn main() { // Variablen werden mit let eingeleitet let x = 42; // unveränderbar (final in Java) //x += 1; Das würde nicht funktionieren println!("{x}"); let mut y = 24; // mut == mutable (also veränderbar) println!("{y}"); y += 1; // Das funktioniert println!("{y}"); let x = 187; // Shadowing: es wird eine neue Viariable mit dem selben Namen erstellt, dieser überschattet die vorherige Variable println!("{x}"); { // Hier sind wir in einem Block // Wenn hier Variablen deklariert werden, sind sie außerhalb des Blocks nicht mehr verfügbar let x = 1234; // Shadowing geht zwar auch ohne Block, aber das verdeutlicht, dass man in Blöcken Variablen deklarieren kann, die gleich heißen wie die von außerhalb println!("{x}"); } println!("{x}"); // Der Wert ist wieder der Alte let x = "Typwechsel ist erlaubt!"; println!("{x}"); const KONSTANTE: i32 = 42; // Gar nicht mehr veränderbar (auch nicht durch Shadowing) println!("{KONSTANTE}"); }