[Rust] Sized ํŠธ๋ ˆ์ž‡

Sized๋Š” ๋‹จ์–ด ๊ทธ๋Œ€๋กœ ์‚ฌ์ด์ฆˆ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํŠน์ˆ˜ํ•œ ํŠธ๋ ˆ์ž‡์ด๋‹ค.

๋งŒ์•ฝ Sized ํŠธ๋ ˆ์ž‡์„ ๋งŒ์กฑํ•œ๋‹ค๊ณ  ํ•˜๋ฉด, ๊ทธ ํƒ€์ž…์€ ์ปดํŒŒ์ผํƒ€์ž„์— ํฌ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…์ด๋‹ค!

๊ทธ๋ž˜์„œ ์ผ๋ฐ˜์ ์ธ ๊ธฐ๋ณธ ํƒ€์ž…๋“ค์€ ์ „๋ถ€ Sized๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ , ํƒ€์ž…์— ๋ฐ”์šด๋“œ๋ฅผ ๊ฑธ๋”๋ผ๋„ ์ „๋ถ€ Sized๊ฐ€ ์•”์‹œ์ ์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

์•„๋ž˜ ์ฝ”๋“œ๋Š” T: Sized๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํ•ด๋’€์ง€๋งŒ, ์ƒ๋žตํ•ด๋„ ๊ฒฐ๊ณผ๋Š” ๊ฐ™๋‹ค. image

image

image ๊ทธ๋ƒฅ i32์€ ๊ดœ์ฐฎ์ง€๋งŒ [i32]๋Š” ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ด๋‹ค.
[i32]์€ ์• ์ดˆ์— ๊ธธ์ด๋ฅผ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ์ปดํŒŒ์ผํƒ€์ž„์— ๊ทธ ํฌ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋”ฐ๋ฌธ์ด๋‹ค.
๋˜ ์ฐธ์กฐ๋ฅผ ๋ถ™์ด์ง€ ์•Š์€ ํŠธ๋ ˆ์ž‡ ํƒ€์ž…๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค. ๊ตฌํ˜„์ฒด๊ฐ€ ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ธฐ๋ฅผ ์•Œ ์ˆ˜๊ฐ€ ์—†๋‹ค.

์ด๋Ÿฐ ๊ฐ€๋ณ€ํฌ๊ธฐ์˜ ํƒ€์ž…์€ Sized๊ฐ€ ์•„๋‹Œ ?Sized๋กœ ํ‘œ์‹œ๋ฅผ ํ•ด์•ผํ•œ๋‹ค. ?Sized๋Š” ํฌ๊ธฐ๋ฅผ ์•Œ์ˆ˜ ์žˆ๋“  ์—†๋“  ๋‹ค ๋ฐ›์•„์ฃผ๋Š” ์นœ๊ตฌ๋‹ค. image

image ๋Œ€์ถฉ ์ด๋ ‡๋‹ค.

Box ๊ฐ™์€ ๋†ˆ๋“ค์ด ?Sized๋ฅผ ๋ฐ›๋Š” ์นœ๊ตฌ๋“ค์ด๋‹ค.



ํŠธ๋ ˆ์ž‡ ์˜ค๋ธŒ์ ํŠธ ์ƒ์„ฑ ๊ธˆ์ง€
๊ทธ๋Ÿฐ๋ฐ Sized๋ฅผ ํŠธ๋ ˆ์ž‡์— ์ƒ์†์„ ์‹œํ‚ค๋ฉด ์กฐ๊ธˆ ๋‹ค๋ฅธ ์šฉ๋ฒ•์ด ๋œ๋‹ค. image

image ์œ„์™€ ๊ฐ™์ด ํ•ด๋‹น ํŠธ๋ ˆ์ž‡์œผ๋ก  ํŠธ๋ ˆ์ž‡ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜๊ฐ€ ์—†๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. image

image ๋˜๊ฒŒ ๋ญ๋ผ๊ทธ๋Ÿฐ๋‹ค.



์ฐธ์กฐ
https://stackoverflow.com/questions/30938499/why-is-the-sized-bound-necessary-in-this-trait
http://huonw.github.io/blog/2015/01/the-sized-trait/