HashMap Ownership
해시맵에 넣는 순간 누가 값을 소유하는지 결정된다
소유 값을 삽입하면 맵이 새 소유자가 되고, 참조를 삽입하면 원본의 생존 시간이 맵 사용 시간보다 길어야 한다.
조회 기준이며 같은 타입으로 통일된다.
키와 함께 저장되며 타입은 모든 항목에서 같아야 한다.
수명
소유 삽입은 맵이 책임지고, 참조 삽입은 원본이 책임진다.
Owned Values
String을 넣으면 맵으로 이동
insert(field_name, field_value)
삽입 후 원래 변수는 더 이상 사용할 수 없다.
맵이 드롭될 때 함께 정리
값의 소유권이 맵 안으로 옮겨졌기 때문이다.
Borrowed Values
참조를 넣으면 원본 생존이 계약
insert(&name, &value)
맵은 빌려온 주소를 담을 뿐 값을 소유하지 않는다.
원본이 먼저 사라지면 불가능
라이프타임 검사가 이 위험을 막는다.
삽입 방식 삽입 후 원본 선택 기준
소유 값 이동되어 사용할 수 없다. 맵이 데이터를 오래 들고 있어야 할 때 안전하다.
Copy 값 복사본이 들어가므로 원본도 계속 쓸 수 있다. 숫자처럼 작고 복사 가능한 값에 자연스럽다.
참조 값 원본이 계속 살아 있어야 한다. 맵이 원본보다 짧게 쓰일 때만 적합하다.
타입 통일
모든 키는 같은 타입, 모든 값도 같은 타입이어야 한다.
소유권 확인
삽입 뒤에도 원본을 써야 한다면 참조나 복사를 검토한다.
라이프타임 확인
참조를 저장하면 원본이 맵 사용 기간을 덮어야 한다.