Avatar ·

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.

\n\n

Zum Beispiel habe ich ein einfaches Programm geschrieben, das versucht, den Wert einer Variable durch eine Funktion zu ändern:

\n\n
fn 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\n

Der Compiler meckert über die Zeile *val = 100, sagt etwas darüber, dass val