Recursive Type

재귀 타입이 Box로 크기를 갖는 과정

직접 재귀 타입은 크기를 알 수 없지만 Box는 포인터 크기로 재귀 구조를 끊어 준다.

무한 크기 문제를 끊는 방식

heap indirection

Direct Recursion

enum 안에 자기 자신이 직접 들어가면 크기가 끝없이 커진다.

Sized Need

Rust는 컴파일 시 타입 크기를 알아야 한다.

Box<T>

실제 값은 힙에 두고 스택에는 고정 크기 포인터만 둔다.

Cons List

재귀 연결 구조를 Box로 감싸 표현할 수 있다.

Ownership

Box는 힙 값을 단일 소유하며 스코프 끝에 해제한다.

Tradeoff

간접 참조 비용이 있지만 재귀 타입 표현이 가능해진다.

직접 재귀크기 불명Box 간접화컴파일 가능
읽는 법

Box는 값을 작게 만드는 것이 아니라 스택에 놓이는 표현을 포인터 하나로 고정하는 도구다.