15 macro_rules!
Rust가 제공하는 강력한 매크로 시스템은 메타프로그래밍을 허용한다. 이전 챕터들에서 봤듯이, 매크로들은 함수와 유사하지만 그들의 이름은 !
로 끝나고 함수 호출을 생성하는 것과 다르게, 매크로는 소스 코드에 확장되어 나머지 프로그램과 함께 컴파일 된다.
매크로들은 macro_rules!
매크로를 사용해 만들어 진다.
// `say_hello`라는 이름의 간단한 매크로. macro_rules! say_hello { // `()`는 매크로가 아무 인자도 취하지 않는다는 걸 의미한다. () => ( // 매크로는 이 블록 안의 내용으로 확장된다. println!("Hello!"); ) } fn main() { // 이 호출은 `println!("Hello");`으로 확장된다. say_hello!() }