Rust Procedural Macros By Example
안녕하세요. 제가 최근에 Rust 공부를 시작했는데요~ 그래서 오늘은 Rust 1.29.0 부터 stable 이 된 Procedural Macros 에 대해서 포스팅해보도록 하겠습니다. 포스팅은 구구절절한 설명보다는 예제 코드 위주가 될 예정입니다! Rust 의 매크로 시스템 Rust 의 매크로 시스템은 매우 강력한데요. 크게 다음과 같이 분류 할 수 있습니다. Declarative Macros Procedural Macros Function-like macros Derive mode macros Attribute macros 첫 번째는 Declarative Macros 는 일반적으로 개발자들이 흔히 알고 있는 “선언적” 형태의 매크로 방식인데요. C/C++ 등의 타언어들과의 차이점은 문자열 전처리기 방식이 아니라 Abstract Syntax Tree 를 직접 건드리는 방식이라는 점입니다. // 출처 : https://doc.rust-lang.org/rust-by-example/macros/dsl.html macro_rules! calculate { ( eval $e : expr ) = > { { { let val : usize = $e ; // Force types to be integers println! ( "{} = {}" , stringify! { $e } , val ) ; } } } ; } fn main ( ) { calculate! { eval 1 + 2 // hehehe `eval` is _not_ a Rust keyword! } calculate! { eval ( 1 + 2 ) * ( 3 / 4 ) } } Declarative Macros 는 이번 포스팅의 주제가 아니므로, ...