소유권

소유권 규칙의 소유자·이동·drop 흐름

각 값에는 단 하나의 소유자가 있고, 소유자가 스코프를 벗어나면 값은 drop되어 메모리 정리가 일어납니다.

이동 판정 힙 데이터를 담는 값이 다른 변수로 대입되면 포인터 정보가 이동하고, 이전 이름은 더 이상 그 값을 사용할 수 없습니다.

정수나 bool처럼 스택에만 있는 Copy 타입은 대입 후에도 이전 이름이 유효합니다.

소유자

각 값은 현재 책임지는 이름을 하나만 가지며 중복 해제를 막습니다.

스코프

소유자가 범위를 벗어나면 Rust가 자동으로 drop을 호출합니다.

move

String 같은 힙 보유 값은 대입이나 함수 전달에서 소유권이 이동합니다.

clone

정말 복제가 필요할 때 힙 데이터까지 명시적으로 복사합니다.

값 추적 순서

복사 예외
1
생성

값이 스택에만 있는지 힙 데이터를 가리키는지 확인합니다.

2
전달

대입과 함수 호출에서 소유권이 이동하는지 표시합니다.

3
종료

스코프 끝에서 어떤 이름이 drop 대상인지 확인합니다.

소유권은 메모리 정리 코드를 숨기는 대신, 값의 책임자가 누구인지 컴파일 단계에서 분명히 하게 만듭니다.