더북(TheBook)

▲ 그림 4-3 러스트는 x 값을 삭제하는 대신 Arc의 카운트를 증가시킨다. x 또는 y가 범위를 벗어날 때마다 0이 될 때까지 카운트를 감소시킨 다음 .drop을 호출하여 힙에서 값을 제거한다

Arc 타입은 원자적 참조 카운터(atomic reference counter)이다. 안에 감싼 데이터를 힙으로 옮기고 스택에 포인터를 생성하는 컨테이너로 볼 수 있다. Arc를 복제할 때는 힙에 있는 동일한 데이터 구조를 가리키는 포인터를 복제하고 내부적으로 Arc의 카운트를 증가시킨다. 내부 카운트가 0에 도달하면(변수를 가리키는 모든 변수가 범위를 벗어날 때) Arc는 값을 삭제한다. 이렇게 하면 여러 변수 간에 힙에 있는 복잡한 데이터를 안전하게 공유할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.