라이프타임

라이프타임 명시가 말하는 관계

라이프타임은 참조가 얼마나 오래 사는지를 새로 늘리는 기능이 아니라, 여러 참조 사이의 유효 범위 관계를 설명하는 표기입니다.

명시가 필요한 때 함수가 여러 참조를 받고 참조를 반환할 때, 반환 참조가 어느 입력과 연결되는지 컴파일러가 알아야 합니다.

대여 검사기는 더 짧게 사는 값의 참조가 더 오래 사용되는 위치로 나가지 못하게 막습니다.

함수 시그니처

fn longest<'a>(x: &'a str, y: &'a str) -> &'a str처럼 관계를 적습니다.

구조체

참조를 필드로 보관하는 구조체는 그 참조의 라이프타임을 타입에 표시합니다.

생략 규칙

흔한 패턴은 컴파일러가 추론하지만 모든 관계를 알 수 있는 것은 아닙니다.

static

'static은 프로그램 전체 동안 유효한 참조를 뜻하며 남용할 해결책은 아닙니다.

라이프타임 오류 읽기

댕글링 방지
1
입력

함수나 구조체가 어떤 참조를 받는지 나열합니다.

2
반환

돌려주는 참조가 어느 입력에서 온 것인지 표시합니다.

3
범위

가장 짧은 유효 범위 안에서만 참조가 쓰이는지 확인합니다.

라이프타임 표기는 참조를 오래 살게 하는 주문이 아니라, 이미 존재하는 수명 관계를 타입에 적는 언어입니다.