RUST · MACRO
derive 매크로 코드 생성 파이프라인
커스텀 derive 매크로는 사용자가 적은 타입 정의를 토큰으로 받아 분석하고, 구현 코드를 다시 토큰으로 만들어 컴파일러에게 돌려줍니다.
생성 단계
derive
#[derive(...)]
사용자 타입에 매크로 호출이 붙습니다.
TokenStream
컴파일러가 타입 정의를 토큰으로 전달합니다.
syn parse
토큰을 구조체/열거형 AST로 분석합니다.
quote!
생성할 impl 코드를 토큰 형태로 조립합니다.
generated impl
최종 구현 코드가 컴파일 대상에 추가됩니다.
derive 입력
→
TokenStream
→
syn
→
quote
→
impl 생성
구성 요소
crate
proc_macro
매크로 진입점의 입력과 출력 타입을 제공합니다.
syn
Rust 코드를 분석 가능한 자료구조로 파싱합니다.
quote
Rust 코드 형태의 토큰을 안전하게 만들어 냅니다.
별도 크레이트
절차적 매크로는 보통 전용 derive 크레이트로 분리합니다.