[Rust] trait: Associated types
Associated types์ ํธ๋ ์ ๋จ์์ ๋ด๋ถ ํ์
์ ์ ์ํ๊ฒ ํด์ฃผ๋ ์ผ์ข
์ ์ ๋๋ฆญ ๊ธฐ๋ฅ์ด๋ค.
์ฌ์ค ๊ธฐ๋ฅ์ ์ผ๋ก ๋๋จํ๊ฑธ ํ๋๊ฑด ์๋๊ณ , ๊ทธ๋ฅ ๊ฐ๋
์ฑ์ ํฅ์์์ผ์ฃผ๋ ์ ๋์ ์ญํ ๋ง ํ๋ค.
๋ง์ฝ, ํธ๋ ์์ ์ฌ์ฉํด์ ๋ฐฐ์ด์ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๋ค๋ฉด ์ด๋ ๊ฒ ํ ์ ์์ ๊ฒ์ด๋ค.

๊ตฌํ์๋ ๋ฌธ์ ๋ ์๋ค.
์ ๊ธฐ์ T๋ผ๋ ์ ๋๋ฆญ ํ์
์ ์ ๋ฐ์ ์ผ๋ก ๊ฝค ํฐ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๊ฐ๊ฐ์ ๋ฐฐ์ด ์์์ ๋ํ ํ์
์ ๊ฐ๋ฆฌํค๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ฌํ ์๋ฏธ์์ ์ด๋ฐ๊ฑด Associated types์ผ๋ก ์ ์ํ๋ฉด ์ข๋ ์ง๊ด์ ์ผ๋ก ๋ณด์ผ ์ ์๋ค.
์ ๋๋ฆญ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๊ฑฐํ๊ณ , ๊ทธ๊ฑธ Associated type ์ ์๋ก ๋์นํ๋ค.
์ ๋ฌ๋ฉด ์ด์ type Item์ด๋ผ๋ ํ์
์ ์๋ ๋ฐ๋์ ๊ตฌํ์๊ฐ ์ฌ์ ์๋ฅผ ํด์ผํ๋ ํ์
์ด ๋๋ค. ์ฌ์ค ์ ๋๋ฆญ์ผ๋ก ์ด๊ธฐํ๋ ๊ฒ๊ณผ ๋ณ๋ก ๋ค๋ฅด์ง๋ ์๋ค.
๊ทธ๋ผ ์ด์ ๊ตฌํ์ ์ธก์์๋ ์ด๋ฐ์์ผ๋ก ๋ฎ์ด์ธ ์ ์๋ค.
์ข๋ ๊ด์ฐฎ์ ๋ณด์ด๋?
์ทจํฅ์ด ์กฐ๊ธ ๊ฐ๋ฆด ์๋ ์๊ธด ํ๋ฐ, ๋ณดํต ์ด๋ฌํ ๊ตฌ์กฐ๋ก ์ฌ์ฉ์ ๋ง์ด ํ๋ ํธ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๋ฐ๊ฒ ์ธ์๋ ๋ด๋ถ์์ ๋ฐ๋ณต์ ์ผ๋ก ์ฐ์ผ ์ ์๋ ํ์
์ aliasํด์ ์ฌ์ฉํ๊ธฐ์๋ ๊ด์ฐฎ๋ค.
์ ํฉํ ์์๋ผ๊ณ ํ ์๋ ์์ง๋ง, ์ธ๋ฑ์ค์ ์ฌ์ฉํ๋ usize ํ์
์ ์ผ๋ฐํํด์ ํํํ ์๋ ์์ ๊ฒ์ด๋ค.


์ ์กฐ
https://doc.rust-lang.org/rust-by-example/generics/assoc_items/types.html