L'operatore . viene usato per accedere a campi e metodi di un riferimento. Funziona in modo un po' più sottile.
let f = Foo { value: 42 };
let ref_ref_ref_f = &&&f;
println!("{}", ref_ref_ref_f.value);
Perché non abbiamo dovuto aggiungere *** prima di ref_ref_ref_f? È perché l'operatore . dereferenzia automaticamente una sequenza di riferimenti. L'ultima riga viene trasformata automaticamente dal compilatore in questo modo:
println!("{}", (***ref_ref_ref_f).value);