macro rules

vec! 매크로는 토큰을 패턴에 맞춰 캡처하고 반복 확장한다

입력 토큰은 matcher에서 metavariable로 잡히고, 반복 구문이 실제 Vec 생성 코드로 펼쳐진다.

01 input tokensvec![1, 2, 3]

컴파일 전 토큰

02 matcher$($x:expr),*

표현식 반복 캡처

03 expansiontemp Vec push 반복

코드 생성

04 compiler확장된 Rust 코드 검사

타입과 소유권 검증

구분의미판단
$x:expr표현식 하나 캡처1 또는 a + b
$(...),*쉼표 반복0개 이상 항목
확장 결과일반 Rust 코드매크로 이후에도 타입 검사

핵심 macro_rules는 문자열 치환이 아니라 Rust 토큰 구조를 패턴으로 받아 코드로 펼치는 장치다.