impl method syntax

메서드는 타입의 impl 안에서 self를 첫 인자로 받는 함수다

Rectangle의 area를 자유 함수에서 메서드로 옮기면, 데이터와 동작이 같은 타입 경계 안에 모이고 호출자는 rect.area()처럼 인스턴스에서 바로 읽습니다.

struct

Rectangle 데이터

width와 height 필드는 타입의 상태이고, area 계산은 이 상태를 읽는 동작입니다.

impl

타입 경계에 묶기

impl Rectangle 안에 area를 두면 Rectangle이 제공하는 기능으로 검색됩니다.

&self

소유권을 가져오지 않음

면적 계산은 필드를 읽기만 하므로 self: &Self 축약형인 &self가 맞습니다.

call

rect.area()

점 문법은 첫 인자로 rect의 참조를 자동으로 넘기고 메서드를 실행합니다.

호출 해석
rect area() &self

호출자는 인자를 넘기지 않는 것처럼 보이지만, 컴파일러는 메서드의 self 형태에 맞춰 참조나 가변 참조를 맞춥니다.

필드와 같은 이름

괄호가 있으면 메서드, 없으면 필드

rect.width는 필드 접근이고 rect.width()는 메서드 호출입니다. 같은 이름을 쓸 때는 공개 API 의도를 분명히 해야 합니다.