Box

Box๋Š” ํž™ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์†Œ์œ  ํฌ์ธํ„ฐ์ž…๋‹ˆ๋‹ค:

fn main() {
    let five = Box::new(5);
    println!("five: {}", *five);
}
5StackHeapfive

Box<T>์€ Deref<Target = T>๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Box<T>์—์„œ T ๋ฉ”์„œ๋“œ๋ฅผ ์ง์ ‘ ํ˜ธ์ถœ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

  • Box๋Š” C++์˜ std::unique_ptr๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ์ฐจ์ด๋ผ๋ฉด Box๋Š” ๋„์ด ์•„๋‹˜์„ ๋ณด์žฅํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.
  • Deref ๋•๋ถ„์— ์œ„ ์˜ˆ์ œ์˜ println!๋ฌธ์— ์‚ฌ์šฉ๋œ *๋ฅผ ๋นผ๋„ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • Box๋Š” ์•„๋ž˜์˜ ๊ฒฝ์šฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค:
    • ํƒ€์ž… ํฌ๊ธฐ๋ฅผ ์ปดํŒŒ์ผ ์‹œ์ ์— ์•Œ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ.
    • ์•„์ฃผ ํฐ ๋ฐ์ดํ„ฐ์˜ ์†Œ์œ ๊ถŒ์„ ์ „๋‹ฌํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ. ์Šคํƒ์— ์žˆ๋Š” ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๋Œ€์‹  Box๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋Š” ํž™์— ์ €์žฅํ•˜๊ณ  ํฌ์ธํ„ฐ๋งŒ ์ด๋™ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.