Was bedeuten die Symbole Ampersand (&) und Sternchen (*) in Rust?
Hallo zusammen! Ich habe gerade angefangen, Rust zu lernen, und komme mit zwei Operatoren nicht klar: & (Ampersand) und * (Sternchen). In anderen Sprachen wie C++ bin ich gewohnt, dass & die Adressnahme ist und * das Dereferenzieren eines Pointers. Aber in Rust ist alles irgendwie anders.
Zum Beispiel habe ich ein einfaches Programm geschrieben, das versucht, den Wert einer Variable durch eine Funktion zu ändern:
\n\nfn main() {\n let x = 42;\n let y = &x;\n println!("{}", y); // Funktioniert, aber was passiert hier?\n \n let mut z = 10;\n change_value(&z);\n println!("{}", z);\n}\n\nfn change_value(val: &i32) {\n *val = 100; // Fehler! Warum?\n}\n\nDer Compiler meckert über die Zeile *val = 100, sagt etwas darüber, dass val