[Rust] any Rust
๊ด๋ จ ํฌ์คํธ
https://blog.naver.com/sssang97/223057472977
DI ์์คํ ์ ์ง์ ๊ตฌํํ๋ฉด์ any ๋ก์น ์ ์ข ํด๋ณด๊ฒ ๋์๋๋ฐ, ๊ฑฐ๊ธฐ์ ์ป์ ์ฌ์ฉ์์ ์ฃผ์์ ์ ๋๋ต ์ ๋ฆฌํด๋ณด๊ฒ ๋ค.
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
any์ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ์ ๋ณ๊ฑฐ ์๋ค.
any ํธ๋ ์์ผ๋ก ๋ฐ์ฑ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด, ๊ทธ๊ฒ ์์ฒด๋ก any ํ์
์ ๋์ ๊ฐ์ฒด๊ฐ ๋๋ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ downcast๋ฅผ ํตํด์ ์๋์ ๊ฐ์ ํ์
์์ ํ๊ฒ ๊ฐ์ ธ์ฌ ์ ์๋ค.
TypeId
๊ทผ๋ฐ ๋ณดํต ์ ๊ฒ๋ง์ผ๋ก๋ ๋ถ์กฑํ๋ค.
๋ณดํต any ๋ก์น ์ ํด์ผํ ์ํฉ์ด ์ค๋ฉด ํ์ ์ ๋ณด๋ฅผ ๋ค๊ณ ์ ๊ทธ๋๊ทธ๋ ๊ทธ๊ฑธ ๊ธฐ๋ฐ์ผ๋ก ๋ญ๊ฐ ์ฒ๋ฆฌ๋ฅผ ํด์ผํ ๋๊ฐ ๋ง์๋ฐ, ์ด๊ฑธ ์ํ ๋ณด์กฐ๊ธฐ๋ฅ์ด TypeId๋ค.
TypeId::of ์ ๋๋ฆญ ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ํ์ ์ ๋ํ ํ์ ๊ณ ์ ๋ฒํธ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
์ด๋ฐ์์ผ๋ก ํ๋์ ํ์
๋ง๋ค ๊ณ ์ ํ ๊ฐ์ด ๋ฐ๊ธ๋๋ค.
์ด๊ฑด ์ ๋๋ฆญ์ด ๋ผ์ด๋ค์ด๋ ํฌ๊ฒ ๋ฌ๋ผ์ง์ง ์๋๋ค.
์ค์ ๋ก ๋๋ฑํ ํ์
์ธ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก Id๋ฅผ ๋ฐ๊ธํ๊ธฐ ๋๋ฌธ์, ๊ฐ์ ํ์
์ผ๋ก ์ฌ๋ฌ๋ฒ ์ ๋๋ฆญ์ ๊ตฌ์ฒดํํ๋๋ผ๋, ํ์
์ด ํธํ๋๋ฉด ๊ฐ์ TypeId๊ฐ ๋์จ๋ค.

Box์ TypeId
๊ทผ๋ฐ Any Box์ ํด์ ์ฐ๋ค๋ณด๋ฉด ์ข ํผ๋ํ ์ ์๋ ๋ถ๋ถ์ด ์๋ค.
์ด๋ฐ์์ผ๋ก ๋ฐ์ฑ์ ํ๊ณ , ๊ทธ๋ฅ ๊ธฐ์กด ํ์
๊ณผ ๋๋ฑํ ๊ฒ์ด๋ผ ๊ฐ์ ํ๊ณ ์ฐ๋ฉด
TypeId๊ฐ ๋ค๋ฅด๊ฒ ๋์จ๋ค.
์ ๊ฒ ์๋๋ฉด, ํ์ฌ ํ์
์ ๊ธฐ์ค์ผ๋ก Id๋ฅผ ๋ฐ๊ธํ๋ ๊ฒ์ธ๋ฐ ์ boxed๋ Box<>๋ก ๊ฐ์ธ์ธ ๋ ๋ณ๊ฐ์ ํ์
์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๋ง์ฝ ๋ฐ์ฑ๋ Any ์ค๋ธ์ ํธ์์ ์ง์ง ํ์ ๊ฐ์ ๊บผ๋ด๊ณ ์ถ๋ค๋ฉด ์ญ์ฐธ์กฐ๋ฅผ ํด์ ์ธ๋ฐ์ฑ๋ dyn Any ์ฐธ์กฐ๋ฅผ ๊ฐ์ ธ์์ผ ํ๋ค.

ํธ๋ ์ any ๋ฐ์ฑํ๊ธฐ
๋ง์ฝ ์ด๋ฏธ ๋ฐ์ฑ๋ ํธ๋ ์ ๊ฐ์ฒด๋ฅผ any๋ก ๋ง๋ค๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
์ฌ์ค ๋ฐฉ๋ฒ์ ๋ค๋ฅผ๊ฒ ์๋ค.

์ด์ค๋ฐ์ฑ์ ํ๋ฉด ๋๋ค.
ํธ๋ ์ ๋ฐ์ฑ์ ๋จผ์ ํ๊ณ , any๋ก ํ๋ฒ ๋ ๋ฐ์ฑ์ ํ๋ค.
any ๋ค์ด์บ์คํธ๋ก ๊บผ๋ด์ฌ๋๋ ํธ๋ ์ ๋ฐ์ค๋ก ๊ฐ์ ธ์ค๋ฉด ๋๋ค.