[rust] 단일 아포스트로피로 표시된 Rust 유형은 무엇입니까?

Rust에서 단일 아포스트로피로 표시된 여러 유형을 발견했습니다.

'static
'r
'a

그 아포스트로피의 의미는 무엇입니까? 아마도 참조 ( &) 의 수정 자 일까요? 참조에 특정한 일반 타이핑? 이것에 대한 문서가 어디에 숨겨져 있는지 모르겠습니다.



답변

이것은 Rust의 명명 된 수명입니다.

Rust 프로그래밍 언어 에서 인용 :

Rust의 모든 참조에는 해당 참조가 유효한 범위 인 수명이 있습니다. 대부분의 시간 유형이 추론되는 것처럼 대부분의 시간 수명은 암시 적이며 추론됩니다. 여러 유형이 가능하기 때문에 유형에 주석을 달아야 할 때와 유사하게, 참조의 수명이 몇 가지 다른 방식으로 관련 될 수있는 경우가 있습니다. 따라서 Rust는 일반 수명 매개 변수를 사용하여 관계에 주석을 달아야합니다. 런타임에 사용 된 실제 참조는 확실히 유효합니다.

평생 주석은 관련된 참조의 라이브 기간을 변경하지 않습니다. 서명이 제네릭 유형 매개 변수를 지정할 때 함수가 모든 유형을 승인 할 수있는 것과 동일한 방식으로, 서명이 제네릭 수명 매개 변수를 지정할 때 함수는 모든 수명이있는 참조를 승인 할 수 있습니다. 수명 주석이하는 일은 여러 참조의 수명을 서로 관련시키는 것입니다.

수명 주석에는 약간 특이한 구문이 있습니다. 수명 매개 변수의 이름은 아포스트로피로 시작해야합니다 '. 수명 매개 변수의 이름은 일반적으로 모두 소문자이며 제네릭 유형과 마찬가지로 이름은 일반적으로 매우 짧습니다. 'a대부분의 사람들이 기본값으로 사용하는 이름입니다. 수명 매개 변수 주석은 &참조 뒤에 오고, 공백은 참조 유형에서 수명 주석을 분리합니다.

달리 말하면, 수명은 참조가 가리키는 데이터가 유효한 실행 기간과 비슷합니다. Rust 컴파일러는 안전하기 위해 가능한 가장 짧은 수명을 보수적으로 추론합니다. 컴파일러에게 참조가 가장 짧은 추정치보다 오래 지속된다는 것을 알리려면 예를 들어 출력 참조가 주어진 입력 참조와 동일한 수명을 갖는다 고 이름을 지정할 수 있습니다.

'static프로그램의 기간 동안 – 수명은 특별한 수명이 가장 긴 모든 수명의 살았다이다. 일반적인 예는 프로그램 / 모듈의 수명 동안 항상 사용할 수있는 문자열 “리터럴”입니다.

이 슬라이드 데크 에서 자세한 정보를 얻을 수 있습니다 ( 슬라이드 29부터 시작).

Lifetimes in Rust 는 또한 수명에 대해 깊이 설명합니다.


답변