Ich bin neu in Rust und versuche zu lernen, wie Referenzen funktionieren. Im folgenden Code, wenn ich eine Berechnung auf a1
machen möchte, die i32
ist, muss ich es nicht dereferenzieren. Aber mit b1
, die eine Box
ist, muss ich es dereferenzieren.Veraltet Rust automatisch primitive Typreferenzen?
Tatsächlich verhalten sich sowohl let a2 = a1 * 2;
als auch let a3 = *a1 * 2;
ähnlich. Es sieht so aus, als ob die Dereferenzierung in Primitiven optional ist ODER der Compiler das implizit für uns erledigt.
fn main(){
let a = 5;
let b = Box::new(10);
let a1 = &a;
let b1 = &b;
println!("{} {}", a1, b1);
let a2 = a1 * 2;
let b2 = (**b1) * 10;
let a3 = *a1 * 2;
println!("{} {} {}", a2, a3, b2);
}
Kann jemand bitte diese Funktionalität erklären?
Ja, unbeschränkte Ganzzahlliterale standardmäßig auf 'i32'. –