[Rust] ๊ณต์šฉ์ฒด(union)

๋งŒ์•ฝ C/C++์˜ union์„ ๋– ์˜ฌ๋ ธ๋‹ค๋ฉด, ๊ทธ๊ฒƒ์ด ๋งž๋‹ค.
์ด๊ฑด C union๊ณผ์˜ ์—ฐ๋™์„ ์œ„ํ•œ ์ „์šฉ ๊ธฐ๋Šฅ์ด๋‹ค.

๊ณต์šฉ์ฒด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด, ๊ทธ๋ƒฅ ๊ตฌ์กฐ์ฒด์ฒ˜๋Ÿผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ. image

image ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ€์žฅ ํฐ ํฌ๊ธฐ์˜ ๊ฐ’ ํ•˜๋‚˜๋งŒ ์ €์žฅ์†Œ๊ฐ€ ๋งˆ๋ จ๋˜๊ณ , ๋ชจ๋“  ํ•„๋“œ๊ฐ€ ๊ณต์œ ํ•˜๋Š” ํ˜•ํƒœ๋‹ค.

ํ•œ๋ฒˆ ์‚ฌ์šฉํ•ด๋ณผ๊นŒ?
์ƒ์„ฑํ•˜๊ณ  ๋ฉค๋ฒ„์— ๋‹ค์‹œ ์ ‘๊ทผํ•˜๋Š” ์‹ฌํ”Œํ•œ ์ฝ”๋“œ๋‹ค. image

image

image ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.
์‚ฌ์‹ค ๊ณต์šฉ์ฒด์˜ ํ•„๋“œ ์ ‘๊ทผ์€ ํ•ญ์ƒ unsafeํ•œ ์—ฐ์‚ฐ์ด๋‹ค.
๋ญ๊ฐ€ ๋“ค์–ด์žˆ์„์ง€ ์•Œ์ˆ˜๋„ ์—†๊ณ , ์“ฐ๊ธฐ ์‹œ์—๋„ ์‚ฌ์ด๋“œ์ดํŽ™ํŠธ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

unsafe๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ๋‹ค์‹œ ์ฝ์–ด๋ณด์ž. image

image

image ์Œ. ์ด๋ฒˆ์—” ์ž˜ ์ถœ๋ ฅ๋๋‹ค.
์ž…๋ ฅํ•œ 33 ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋œ๋‹ค.

๊ทผ๋ฐ ์ € ์ƒํƒœ์—์„œ bar์— ์ ‘๊ทผํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? image

image

image ์–ด๋–ป๊ธฐ๋Š”. ๋‚˜๋จธ์ง€ ๊ณต๊ฐ„์˜ ์“ฐ๋ ˆ๊ธฐ๊ฐ’๊ณผ ๋’ค์„ž์—ฌ์„œ ๋žœ๋คํ•œ ๊ฐ’์„ ๋˜์ง„๋‹ค.

์žˆ๋‹ค๋Š”๊ฒƒ๋งŒ ์•Œ์•„๋‘๊ณ  ์“ฐ์ง„ ๋ง์ž.


์ฐธ์กฐ
https://doc.rust-lang.org/reference/items/unions.html