El operador .
se utiliza para acceder a los campos y métodos de una referencia. Funciona de manera un poco más sutil.
let f = Foo { value: 42 };
let ref_ref_ref_f = &&&f;
println!("{}", ref_ref_ref_f.value);
¿Por qué no hace falta añadir ***
antes de ref_ref_ref_f
? Pues porque el operador .
operator indirecciona automáticamente una secuencia de referencias. La última línea se convierte automáticamente en la siguiente por el compilador.
println!("{}", (***ref_ref_ref_f).value);