[Rust] λ§€ν¬λ‘
λ¬μ€νΈμμλ λ§€ν¬λ‘ν¨μλ₯Ό μ§μνλ€. μ¬νκ» μ λκ² μΌλ println!λ§ ν΄λ λ§€ν¬λ‘ν¨μμλ€.
λ§€ν¬λ‘ν¨μμ μ μΈμ λ€μκ³Ό κ°μ΄ νλ€.
macro_rules! λ§€ν¬λ‘λͺ
{
**Β Β Β ν¨ν΄1=>ννμ1;**
**Β Β Β ν¨ν΄2=>ννμ2;**
**Β Β Β ...**
}
μλλ μΈμλ₯Ό λ°μ§ μλ, κ°λ¨ν λ§€ν¬λ‘λ₯Ό ꡬνν κ²μ΄λ€. ()λ μΈμλ₯Ό λ°μ§ μλλ€λ λ»μ΄λ€.


μΈμλ₯Ό λ°λλ€λ©΄, $μΈμλͺ
:νμμΌλ‘ μΈμλ₯Ό μκ΄νΈ μμ μ§μ ν μ μλ€.
μλμμλ exprμ μΌλλ°, ννμμ΄λ©΄ λ€ λ°λλ€λ λ»μ΄λ€.

μ λμκ°λ€.
μ΄λ κ² ν¨ν΄μ μ¬λ¬κ° μ§μ ν μλ μλ€.


κ°λ³μΈμλ₯Ό μ€μ νλ κ²λ κ°λ₯νλ€.
κ·Έλ¬λ €λ©΄ ν¨ν΄μ $(...), *λ₯Ό μμμ λ°λ³΅μ λνλ΄κ³ , λ°λ³΅ν μ½λμμλ $(...)*λ₯Ό λΆμ¬ μΈμλ₯Ό νμ΄λ΄λ©΄ λλ€.

μ΄λ κ².
μμμλ ννμμ λ€ λ°λ exprλ₯Ό μΌμ§λ§, μ΄μΈμλ λ¨μΌ μλ³μλ§μ λ°λ identκ° μκ³ . pat(ν¨ν΄), ty(νμ ), item(?), block(μ€κ΄νΈλΈλ), stmt(ꡬ문), path(μ€μ²©νμ , tt(λ¨μΌν ν°), vis(?), literal(리ν°λ΄κ°) λ±μ΄ μλ€.
μ°Έμ‘°
https://doc.rust-lang.org/reference/macros-by-example.html