[Rust] μ¬κ· νμ (Recursive Type)
νμ
λ΄μ μ€μ€λ‘μ νμ
μ λ λ£λ κ²μ νν ꡬν ν¨ν΄ μ€ νλλ€.
νΉν μλ£κ΅¬μ‘° κ°μ κΈ°λ°κ΅¬μ‘°λ₯Ό ꡬνν λλ μμ΅μ μΌλ‘ μ¬μ©λλ€.
Rustλ μ¬κ· νμ ννμ μ§μνκΈ΄ νλ, μμ£Ό μ½κ°μ μ νμ¬νμ΄ μ‘΄μ¬νλ€.
μ¬κ· νμ μ κΈ°λ³Έ μμΉ μ€ νλλ, κ° νμ μ 무μμ μ€μ λ£λ ννλ‘λ λ£μ μκ° μλ€λ κ²μ΄λ€.

κ·Έλ₯ μ΄λ κ² λ£μ΄λ²λ¦¬λ©΄ μ€λ₯κ° λλ€.
λΉμ°νλ€. κ·Έλ₯ μ λ κ² λ£μΌλ©΄ νμ
μμ€ν
μ μ ꡬ쑰체 νμ
μ ν¬κΈ°λ₯Ό μμλΌ μκ° μκΈ° λλ¬Έμ΄λ€.
Node μμ λ Nodeκ° μκ³ , λ μκ³ λ₯Ό λ°λ³΅νλ, ꡬ쑰체 ν¬κΈ° νμ
νλλ°μ 무ν μ¬κ·κ° λ°μνλ€.
κ·Έλμ μ¬κ· νμ μ νννκΈ° μν΄μλ, Box κ°μ ν¬μΈν° νμ μΌλ‘ λνν΄μ μ νμ ν΄μ€μΌ νλ€.
μ΄λ¬λ©΄ Box μ체λ μ΄μ°¨νΌ κ³ μ λ ν¬μΈν° ν¬κΈ°λ‘ νκ°λκΈ° λλ¬Έμ λ¬Έμ κ° λ°μνμ§ μλλ€.
μ¬κ· νμ
μ structμλ§ μ¬μ©ν μ μλ κ²μ μλλ€. unionκ³Ό enumμλ μ¬μ©ν μ μλ€.
recursive enumμ κ²½μ°μλ λ€μκ³Ό κ°μ΄ κ³μΈ΅μ μΈ μνꡬ쑰λ₯Ό μ¬μ©ν λ μμ©ν μ μλ€. λνμ μΈ μ¬μ©μ¬λ‘λ‘λ JSON ꡬ쑰 μ μλ₯Ό λ€ μ μκ² λ€.
μ΄ κ²½μ°μλ Vecκ³Ό HashMapμ΄ λ°©κΈ Boxμ μν μ λ체νλ€.
μ 컬λ μ
ꡬ쑰체λ€μ νμ
μ체λ κ³ μ ν¬κΈ°μ΄κΈ° λλ¬Έμ Boxμ λ§μ°¬κ°μ§λ‘ μ ν¨νλ€.
μ°Έμ‘°
https://doc.rust-lang.org/reference/types.html#r-type.recursive