method call

점 하나로 참조 형태를 맞춘다

호출자는 value.method()처럼 쓰고, 컴파일러가 메서드의 self 수신자에 맞춰 빌림이나 역참조를 보정합니다.

핵심

메서드명 + 수신자 타입이 충분하면 필요한 &, &mut, *가 결정됩니다.

1 호출 코드
rect.area()p1.distance(&p2)

호출부는 값이든 참조든 같은 점 문법을 사용합니다.

2 수신자 확인
fn area(&self)fn push(&mut self)

메서드 정의가 읽기, 변경, 소비 중 어느 동작인지 알려줍니다.

3 자동 보정
(&rect).area()(*boxed).area()

필요한 참조와 역참조가 삽입되어 호출이 성립합니다.

&self

값을 읽기만 하므로 불변 참조로 빌립니다.

&mut self

호출 대상이 가변이어야 하며, 변경 가능한 참조가 필요합니다.

self

값을 소비하므로 호출 뒤 원래 인스턴스를 다시 사용할 수 없습니다.