Reflexionen über die Programmiersprache Rust 5

in #deutsch3 days ago

*Mutable und Immutable
*Shadowing

1* Worum geht es und was ist das?

Es geht darum, dass eine Variable einen zugewiesenen Wert hat. Diesen Wert definiert der Programmierer und anders als in anderen Programmiersprachen wird dieser im Standard nicht geändert, es sei denn er muss geändert werden. Das aber dann immer wissentlich und nicht versehentlich.

Also, per Default (normalerweise), ist der Wert einer Variable immer
"immuatable", also nicht änderbar und so behandelt der Compiler es auch. Soll sie das nicht sein, oder ist anders kein sinnvolles Arbeiten mit ihr möglich, verwendet man für mutable, das Kürzel mut. zB.

fn main(){
   let  mut x = 7;
   println!("x={x}");
   x =9; //Es kann hier ohne let x überschrieben werden.
   println!("x={x}");
}

image.png

Um zu verdeutlichen, was passiert, wenn man mut nicht angibt:

fn main(){
   let x = 7; //x ohne mut
   println!("x={x}");
   x =9;
   println!("x={x}");
}

Da wird der Compiler stinkig.

image.png

Wie man sehen kann, ist er aber auch ein wenig hilfreich. Er schreibt die betroffenen Zeilen, was nicht stimmt und häufig hilft er auch gleich eine Idee für die Behebung mitzuliefern.

*Er sagt für Zeile 2, dass hier x das erste mal deklariert wurde.
*Bei Zeile 4 sagt er, dass er nicht 2 mal eine immutable Variable verwenden kann.
*Für Zeile 2 gibt er dann den Hinweis, das mut zum x zu schreiben.

Und wir wissen ja aus dem vorherigen Beispiel, dass es dann funktioniert.

2* Beim Shadowing handelt es sich um das Überschreiben einer Variable.
Das klingt zunächst etwas widersinnig im Bezug auf das Sicherheitssystem, das mit dem Konzept von Rust kommt. Aber es ergibt dann Sinn, wenn eine Nutzereingabe zB immer wieder gebraucht wird und der vorherige Wert nicht mehr gültig ist. Die Variable kann input heißen und jede Nutzereingabe, in einer eigenen Variable gespeichert werden. Die Variable der Nutzereingabe muss aber nicht jedes mal neu irgendwie heißen. Ich hoffe, dass es soweit verständlich ist?