참조와 대여의 안전 규칙

참조는 소유권을 넘기지 않고 값을 읽거나 바꾸게 하지만, 동시에 허용되는 빌림의 조합은 엄격히 제한됩니다.

빌림 판정 여러 불변 참조는 가능하지만, 가변 참조가 있는 동안에는 다른 참조를 함께 둘 수 없습니다.

참조가 가리키는 값보다 오래 살아남지 못하게 하여 해제된 메모리를 읽는 상황을 컴파일러가 차단합니다.

공유 읽기 · 여러 개 허용
소유자 sString
r1, r2&s · &s읽기 전용 별칭
동시에 읽어도 값이 바뀌지 않음
독점 쓰기 · 하나만 허용
소유자 sString
r_mut&mut s유일한 접근 경로
활성 중 &s 또는 두 번째 &mut s는 거부
&T

소유권 이동 없이 값을 읽을 수 있으며 여러 개가 동시에 존재할 수 있습니다.

&mut T

값을 수정할 수 있지만 같은 범위에서 단 하나만 허용됩니다.

대여 범위

참조가 마지막으로 쓰인 뒤에는 새 빌림이 가능해져 코드가 더 유연해집니다.

댕글링 참조

지역 값의 참조를 밖으로 돌려보내는 코드는 컴파일되지 않습니다.

참조 오류 읽기

댕글링 방지
1
소유자

원래 값을 소유한 변수가 어느 스코프까지 유효한지 봅니다.

2
빌림

불변 참조와 가변 참조가 겹치는 구간을 찾습니다.

3
수명

참조가 실제 값보다 더 오래 사용되는지 확인합니다.

대여 규칙은 불편한 제한이 아니라 읽기와 쓰기가 같은 값을 동시에 흔들지 못하게 하는 약속입니다.