Rust method syntax

impl 안에서 동작을 묶고, 호출 문법으로 관계를 드러낸다

메서드는 타입에 붙은 함수이고, 첫 매개변수의 형태가 인스턴스를 읽는지, 바꾸는지, 소비하는지를 알려준다.

1

impl 블록

impl Rectangle { ... }

타입의 네임스페이스 안에 관련 동작을 모은다.

2

&self 메서드

fn area(&self)

호출한 인스턴스를 불변으로 빌려 읽는다.

3

연관 함수

fn square(size) -> Self

인스턴스 없이 타입 이름으로 호출한다.

4

호출 문법

.method() / Type::fn()

점은 값에서, 쌍콜론은 타입 네임스페이스에서 찾는다.

5

소유권 관점

&self | &mut self | self

읽기, 변경, 소비 중 어떤 API인지 시그니처가 말한다.

호출 위치 비교

인스턴스 rect1.can_hold(&rect2)

첫 수신자 rect1은 메서드 시그니처에 맞게 자동으로 빌려진다.

타입 Rectangle::square(3)

self가 없으므로 새 값을 만드는 생성자처럼 쓴다.

수신자 선택

&self 읽기 전용 면적 계산, 조건 검사
&mut self 내부 변경 필드 갱신, 상태 전환
self 값 소비 다른 타입으로 변환
읽는 순서

먼저 impl 대상 타입을 확인하고, 함수 첫 매개변수에 self가 있는지 본 뒤, 호출부의 .::를 구분하면 메서드와 연관 함수의 차이가 선명해진다.