값이 있다
String은 힙 데이터를 소유한다. 그냥 넘기면 기본적으로
소유권 이동을 생각해야 한다.
값을 넘길지, 읽기만 빌릴지, 잠깐 바꿀지만 나누면 소유권 이동과 대여 규칙을 같은 기준으로 판단할 수 있다.
String은 힙 데이터를 소유한다. 그냥 넘기면 기본적으로
소유권 이동을 생각해야 한다.
&String은 읽기용 손잡이다. 함수는 값을 떨어뜨릴
권한 없이 내용만 본다.
len()처럼 관찰만 하는 작업은 공유 참조로 충분하다.
복사나 이동이 필요 없다.
호출이 끝나도 s1은 유효하다. 대여가 끝났으므로 다시
읽거나 출력할 수 있다.
&T를 넘긴다.
&mut T를 하나만 둔다.
mut이어야 하고 같은 시점에 다른 대여와
섞지 않는다.
읽기만 하는 관찰자는 서로 충돌하지 않는다. 데이터 레이스의 원인이 되지 않는다.
수정 권한은 한 시점에 한 곳으로 제한된다. 이 제한이 안전한 변경을 만든다.
참조가 가리키는 값보다 오래 살면 안 된다. 수명 검사가 이 경계를 확인한다.