ownership
소유권은 힙 데이터의 유효한 소유자를 하나로 유지한다
String처럼 힙을 쓰는 값은 대입이나 함수 전달에서 이동하고, Copy 타입은 그대로 복사되어 계속 사용할 수 있습니다.
Owner
Owner
각 값은 동시에 하나의 소유자만 가지며 소유자가 스코프를 벗어나면 drop됩니다.
Move
Move
String 대입은 포인터, 길이, 용량만 옮기고 원래 변수는 더 이상 유효하지 않습니다.
Clone
Clone
힙 데이터까지 복제하려면 clone을 호출해 비용이 있는 복사임을 코드에 드러냅니다.
Copy
Copy
i32, bool, char처럼 크기가 고정된 값은 대입 후에도 원래 변수를 사용할 수 있습니다.
함수 전달
String을 넘기면 함수 쪽으로 이동하고 호출한 쪽 변수는 사용할 수 없습니다.
반환 이동
함수 반환값도 새 변수로 이동해 소유권 흐름을 이어 갑니다.
빌림 필요
호출 이후에도 원래 값을 써야 한다면 참조자로 빌리는 설계를 고려합니다.
소유권 오류는 대부분 값의 내용보다 누가 마지막까지 그 힙 데이터를 책임지는지 추적하면 풀립니다.