[Rust 공식문서 한국어 정리] ⑪. The Little Book of Rust Macros
[Rust 공식문서 한국어 정리] ⑪. The Little Book of Rust Macros
원문: https://veykril.github.io/tlborm/
#Rust #Rustlang #Macros #Metaprogramming #공식문서
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 서론
The Little Book of Rust Macros(TLBORM)는 Rust의 매크로 시스템에 대한 종합적인 학습 자료입니다. 원작은 Daniel Keep이 2016년 초 여름에 마지막으로 업데이트했으며, 현재 버전은 veykril이 Rust 언어와 매크로 시스템의 지속적인 발전에 맞춰 업데이트하고 있습니다. 선언적 매크로(declarative macros, macro_rules!)와 프로시저 매크로(procedural macros) 모두를 다루며, Rust 매크로를 이해하는 데 어려움을 겪는 많은 개발자들에게 큰 도움이 되고 있습니다.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2. 핵심개념
• Declarative Macros (macro_rules!): 패턴 매칭 기반의 코드 생성 메타프로그래밍
• Procedural Macros: 컴파일러 확장을 위한 Rust 함수 기반 매크로 (derive, attribute, function-like)
• Token Trees: Rust 매크로의 기본 단위인 토큰 트리와 매크로 확장 메커니즘
• Hygiene: 매크로의 위생성으로 이름 충돌 방지
• Repetition: $(...)*, $(...)+, $(...)?를 통한 패턴 반복
• Fragment Specifiers: ident, expr, ty, pat, stmt, block 등 매크로 매개변수 타입
• Token Parsing: proc-macro에서의 토큰 스트림 직접 파싱
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
3. 주요내용상세
3.1 Declarative Macros (macro_rules!)
Rust의 전통적인 매크로 시스템으로, 패턴 매칭을 통해 코드를 생성합니다:
• 매크로 정의 문법 — macro_rules! name { (pattern) => { expansion }; }
• Fragment Specifiers — 매크로 인자의 타입 지정 (expr, stmt, ty, ident, path, tt 등)
• Repetition — 여러 인자를 반복 처리하는 $(...)*, $(...)+, $(...)?
• Multiple Patterns — 오버로딩과 유사한 다중 패턴 정의
• Hygiene — 매크로 내에서 생성된 이름이 외부와 충돌하지 않음
• Recursion — 매크로 내에서 자기 자신을 호출하는 재귀적 매크로
• Limitations — macro_rules!의 한계와 복잡한 문법 처리의 어려움
3.2 Procedural Macros
Rust 1.15부터 안정화된 더 강력한 매크로 시스템:
• Derive Macros — #[derive(MyTrait)] 형태의 구조체/열거형 자동 구현
• Attribute Macros — #[my_attribute] 형태의 항목 변형
• Function-like Procedural Macros — my_macro!(...) 형태의 함수형 매크로
• TokenStream 처리 — proc_macro::TokenStream을 직접 파싱하고 변형
• syn & quote 크레이트 — proc-macro 개발의 표준 라이브러리
• Span 정보 — 원본 코드의 위치 정보 보존으로 좋은 에러 메시지 생성
3.3 고급 주제
• 매크로 내에서의 조걸적 컴파일
• TT-munching — 토큰 트리를 하나씩 소비하는 재귀적 파싱 기법
• Push-down Accumulation — 상태를 누적하여 복잡한 매크로 구현
• Procedural Macro Hygiene — proc-macro에서의 위생성 관리
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
4. 실전활용
• DRY(Don't Repeat Yourself) 원칙을 지키기 위한 보일러플레이트 코드 생성
• #[derive(Debug, Clone, Serialize)] 등 자주 사용하는 derive 매크로 직접 구현
• DSL(Domain Specific Language) 생성을 위한 매크로 설계
• 테스트 프레임워크에서의 선언적 테스트 케이스 정의
• 로깅/트레이싱 매크로 (tracing, log 크레이트의 매크로 구조 참고)
• API 설계 시 사용자 친화적인 매크로 인터페이스 제공
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
5. 정리
The Little Book of Rust Macros는 Rust 매크로 시스템의 A부터 Z까지 다루는 필수 참고서입니다. macro_rules!의 기본 문법부터 proc-macro의 복잡한 토큰 처리까지, 매크로를 효과적으로 활용하기 위한 모든 지식을 담고 있습니다. Rust의 매크로는 처음 접하면 어렵게 느껴질 수 있지만, 이 책을 통해 체계적으로 학습하면 코드의 반복을 줄이고 표현력을 극대화하는 강력한 도구로 활용할 수 있습니다.

오뉴노노 님의 최근 댓글
ㅋㅋㅋㅋㅋ 2019 01.14 잘 읽었습니다 2018 12.30 포인트가 없어서 아직 시작을 못하고있는데요! 글은 잘 읽었습니다! 포인트 쌓고 도전할거에요 2018 12.30