Оператор .
используется для доступа к полям и методам ссылки. Он работает более тонко.
let f = Foo { value: 42 };
let ref_ref_ref_f = &&&f;
println!("{}", ref_ref_ref_f.value);
Опа, почему нам не нужно добавлять ***
(три звездочки) перед ref_ref_ref_f
? Это потому, что оператор .
автоматически разыменовывает последовательность ссылок. Последняя строка превращена компилятром в следующий код автоматически.
println!("{}", (***ref_ref_ref_f).value);