Heap Boundary

Box는 값의 크기를 포인터 크기로 고정해 재귀 구조를 열어 준다

컴파일러가 크기를 바로 알 수 없는 재귀 타입은 Box를 통해 힙에 실제 값을 두고 스택에는 포인터만 보관하게 만들 수 있습니다.

Stack

포인터 저장

변수에는 힙 데이터를 가리키는 고정 크기 포인터가 들어갑니다.

Heap

실제 데이터

크거나 재귀적인 값은 힙에 놓이고 Box가 소유권을 관리합니다.

Move

소유권 이동

Box 자체를 이동하면 힙 데이터의 소유권도 함께 이동합니다.

Drop

자동 해제

Box가 범위를 벗어나면 힙 데이터도 함께 정리됩니다.

enum List { Cons(i32, Box), Nil }