토큰을 코드로 바꾸는 두 경로
선언적 매크로는 패턴으로 치환하고, 절차적 매크로는 토큰 스트림을 받아 러스트 코드로 분석하고 생성합니다.
compile time
선언적 매크로
호출 토큰이 정의된 패턴과 맞으면, 캡처한 조각을 반복과 치환 규칙에 따라 코드로 펼칩니다.
패턴 매칭
$( $x:expr ),* 같은 규칙으로 입력을
잡습니다.
반복 확장잡힌 표현식을 원하는 코드 템플릿 안에 배치합니다.
타입 검사확장된 코드가 평범한 러스트 코드처럼 검사됩니다.
절차적 매크로
컴파일러가 넘긴 TokenStream을 함수가 분석하고, 새
TokenStream을 반환합니다.
derive구조체나 열거형에 구현 코드를 자동으로 붙입니다.
attribute아이템에 붙은 속성과 본문을 함께 변환합니다.
function-like함수 호출처럼 보이지만 임의 문법을 파싱할 수 있습니다.