.
연산자는 참조의 field와 메소드에 접근하는 데에 쓰입니다. 이건 좀 더 미묘하게 동작합니다.
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);