impl

메서드와 연관 함수 배치

impl 블록은 구조체와 함께 쓰이는 동작을 같은 타입 근처에 배치해 데이터와 행위를 연결합니다.

self 사용 기준 인스턴스의 데이터를 읽거나 바꾸면 메서드로 만들고, 새 인스턴스를 생성하는 이름 있는 함수는 연관 함수로 둡니다.

rect.area()는 첫 인수로 &self를 넘기는 호출이며, Rectangle::square는 타입에 직접 붙은 생성자처럼 읽힙니다.

&self

인스턴스를 빌려 읽는 메서드에서 가장 자주 쓰입니다.

&mut self

메서드가 인스턴스 내부 값을 수정해야 할 때 선택합니다.

self

소유권을 가져와 인스턴스를 소비하는 동작을 표현합니다.

연관 함수

self 없이 타입 이름으로 호출하며 생성자나 보조 계산에 적합합니다.

impl 읽기 순서

호출 감각
1
대상

어떤 타입에 붙은 impl 블록인지 먼저 확인합니다.

2
수신자

self 형태로 읽기, 쓰기, 소비 중 무엇을 하는지 판단합니다.

3
호출

점 호출과 타입 이름 호출을 구분해 사용 위치를 정합니다.

메서드 문법은 함수를 더 짧게 부르는 장식이 아니라 타입의 책임을 한곳에 모으는 설계 도구입니다.