대여한 데이터 전달하기
Rust의 참조 규칙은 다음과 같이 요약될 수 있습니다:
- Rust는 단 하나의 mutable한 참조 또는 여러개의 non-mutable 참조만 허용하며, 둘 다는 안됨.
- 참조는 그 owner보다 더 오래 살 수 없음.
이는 보통 함수로 참조를 넘겨줄 때에는 문제가 되지 않습니다.
메모리 상세:
- 첫 번째 참조 규칙은 데이터 경합을 방지합니다. 데이터 경합이 뭐냐구요? 데이터 경합은 데이터를 읽는 행위가 동시에 데이터를 쓰는 이의 존재로 인해 동기화가 어긋날 가능성이 있을 때 일어납니다. 이는 멀티쓰레드 프로그래밍에서 종종 발생합니다.
- 두 번째 참조 규칙은 존재하지 않는 데이터를 바라보는 잘못된 참조를 사용하는 것을 방지합니다 (이를 C에서는 허상 포인터(dangling pointers)라고 부릅니다).