lifetime

라이프타임은 참조가 원본보다 오래 남지 못하게 막는다

대여 검사기는 owner scope와 borrow scope가 겹치는 구간을 비교해, 해제된 값을 가리키는 참조 반환을 거부한다.

01 owner scope값이 실제로 살아 있는 구간

String, struct, local value처럼 메모리를 소유한다.

02 borrow scope참조가 읽히는 구간

&T 또는 &mut T가 마지막으로 쓰이는 지점까지다.

03 compare참조가 더 길면 거부

borrow가 owner 밖으로 나가면 dangling 가능성이 생긴다.

04 annotate함수 경계의 관계 설명

lifetime 표기는 수명을 늘리지 않고 입력과 출력의 관계를 고정한다.

구분의미판단
댕글링 방지해제된 값 참조 금지반환 참조는 입력 중 어떤 값과 연결되는지 설명해야 한다.
생략 규칙단순 패턴은 추론입력이 하나면 출력 참조의 lifetime을 추론할 수 있다.
명시 표기'a 관계여러 입력 참조가 얽힐 때 컴파일러에게 관계를 알려준다.

핵심 라이프타임 표기는 참조를 오래 살리는 문법이 아니라 원본과 참조의 생존 관계를 컴파일러가 검증하게 하는 계약이다.