L'opérateur .
est utilisé pour accéder aux champs et aux méthodes d'une
référence. Cela fonctionne un peu plus subtilement que l'opérateur *
.
let f = Foo { value: 42 };
let ref_ref_ref_f = &&&f;
println!("{}", ref_ref_ref_f.value);
Whoa, pourquoi n'avons-nous pas dû ajouter ***
avant ref_ref_ref_f
?
La raison est que l'opérateur .
déréférence automatiquement une
séquence de références. La dernière instruction du bloc ci-dessus est
automatiquement transformée par le compilateur en:
println!("{}", (***ref_ref_ref_f).value);