[Rust] 매크로 사용 팁 몇가지
재귀 매크로
매크로를 사용하는데는 여러가지 이유가 있을 수 있지만, 주된 목적 중 하나가 가변인자를 구현하는 것이다.
가변인자를 구현하려면 재귀를 통한 반복을 수행할 수 있어야 한다.
매크로의 재귀도 함수의 재귀호출과 근본적인 원리는 같다.
마찬가지로 탈출조건이 있어야 한다.
첫번째 조건은 하나의 표현식이 들어왔을때,
두번째 조건은 2개 이상의 표현식이 들어왔을때 대응된다.
여기서 join_vec(A, B, C, D)와 같이 전달한다면,
두번째 조건으로 호출스택을 계속 쌓아올리다가 마지막에 D만 남았을 때 첫번째 조건을 타고 재귀가 종결되면서 스택을 거슬러올라가게 된다.
그리고 join_vec_impl(A, join_vec_impl(B, join_vec_impl(C, D)))의 문장이 완성된다.
매크로 내보내기 (동일 크레이트에서 공유)
매크로 문서들을 보면 내보내고 싶을 때 macro_export를 쓰면 된다고 적어놨는데
그건 매우 단편적인 설명이다.
정확히 말해서 이 기능은, 그냥 외부 크레이트로만 꺼내주는 용도다.
웃기게도 "동일 크레이트의 다른 소스코드"에서는 사용할 수가 없다.
분명히 동일 크레이트에서 노출이 되어있음에도 매크로를 찾지 못한다.
정확히 왜인지는 모르겠지만 시스템을 그냥 이렇게 해놓은 모양이다.
다행히도 여기엔 좀 꼼수가 있는데
use를 하면 사용이 가능해진다.

뭐 어떻게 해놓은건지 모르겠다.
아무튼 이러면 잘 된다.