대여 유효 구간

참조는 마지막으로 사용된 지점까지만 겹침을 만든다

r1, r2가 나중에 다시 읽히면 &mut s는 끼어들 수 없다. 두 공유 참조의 마지막 사용이 지나면 같은 스코프 안에서도 가변 대여를 새로 만들 수 있다.

실패: 공유 참조가 뒤에서 다시 사용됨

E0502
r1, r2
let r1 = &s; let r2 = &s; 여러 불변 참조는 함께 읽기 때문에 허용된다.
&mut
let r3 = &mut s;에서 충돌 뒤의 println!r1, r2를 아직 필요로 하므로 공유 대여가 끝나지 않았다.
later
println!("{}, {}, and {}", r1, r2, r3) 컴파일러는 이 줄 때문에 앞의 공유 대여를 유지한다.

통과: 마지막 읽기 뒤에 가변 참조 생성

허용
read
println!("{} and {}", r1, r2) 여기가 r1, r2의 마지막 사용이다.
r3
let r3 = &mut s; 공유 대여가 더 이상 쓰이지 않으므로 가변 대여가 시작된다.
write
println!("{}", r3) 가변 참조가 단독 접근자로 사용되어 규칙을 만족한다.