Rust · deref

Deref Coercion 변환 사다리

함수 인자 타입이 맞지 않을 때 컴파일러가 deref를 삽입해 참조 타입을 단계적으로 맞춥니다.

암묵적 변환 단계

zero cost

&MyBox<String>

호출자가 넘긴 원래 참조 타입입니다.

Deref::deref

MyBox가 내부 String 참조를 돌려줍니다.

&String

중간 타입으로 함수 인자와 아직 다를 수 있습니다.

String deref

표준 라이브러리 Deref로 str 조각에 닿습니다.

&str

최종적으로 함수가 기대하는 타입이 됩니다.

&MyBox<String> deref &String deref &str

정리

Deref coercion은 편의 문법처럼 보여도 소유권을 옮기지 않고 참조 타입만 컴파일러가 안전하게 맞춰 주는 규칙입니다.