Ownership First

Rust 코드는 값의 이동과 빌림을 따라 읽는다

소유권은 암기 규칙이 아니라 값의 책임자를 정하는 모델입니다. 이동, 불변 빌림, 가변 빌림, 수명 범위를 순서대로 확인하면 컴파일러가 요구하는 설계 의도가 보입니다.

1

값이 만들어진 위치

스택 값인지 힙 데이터를 가진 값인지 보고, 변수 바인딩이 처음 책임을 갖는 지점을 찾습니다.

2

이동이 일어난 지점

대입, 함수 인자 전달, 반환에서 소유권이 옮겨졌는지 확인합니다. 이동 뒤의 이전 이름은 더 이상 사용할 수 없습니다.

3

빌림의 종류

읽기 전용 참조는 여러 개 가능하지만, 가변 참조는 같은 범위에서 하나만 유지되어야 합니다.

4

수명이 끝나는 범위

참조가 원본보다 오래 살 수 없다는 기준으로 블록, 반환값, 구조체 필드의 수명을 다시 배치합니다.

컴파일 오류를 설계 힌트로 바꾸기

A

use after move 소유권이 이미 옮겨졌다면 clone, borrow, ownership 반환 중 하나를 선택합니다.

B

borrow conflict 읽기와 쓰기가 같은 시점에 겹친다면 범위를 줄이거나 데이터를 분리합니다.

C

lifetime mismatch 참조를 저장하려는 곳보다 원본이 먼저 사라지는지 확인합니다.