13.4 Lifetimes

생명주기는 컴파일러에 의해 생성되어(또한 대여 검사자로 불리는) 모든 대여가 유효한지 확인하고자 사용한다. 특별히, 변수의 생명주기는 그가 생성될 때 시작하고 소멸할 때 끝난다. 생명주기와 범위가 자주 함께 인용되는데, 이들은 같지 않다.

취하기를 예로, 우리가 변수를 &로 대여하는 상황이다. 대여는 그게 선언되는 곳에 의해 생명주기가 결정된다. 그 결과 대여는 그 대여자가 소멸하기 전 그 끝까지만 유효하다(생명주기). 하지만, 대여의 범위는 참조가 사용되는 곳에 의해 결정된다(범위).

이 섹션의 나머지와 다음의 예제에서, 우리는 생명주기가 범위와 어떻게 연관있고 어떻게 다른지 살펴보게 될 것이다.

// .
// `i` `borrow1` `borrow2` .
// `borrow1` `borrow2` .
fn main() {
let i = 3; // Lifetime for `i` starts. ────────────────┐
// │
{ // │
let borrow1 = &i; // `borrow1` lifetime starts. ──┐│
// ││
println!("borrow1: {}", borrow1); // ││
} // `borrow1 ends. ──────────────────────────────────┘│
// │
// │
{ // │
let borrow2 = &i; // `borrow2` lifetime starts. ──┐│
// ││
println!("borrow2: {}", borrow2); // ││
} // `borrow2` ends. ─────────────────────────────────┘│
// │
} // Lifetime ends. ─────────────────────────────────────┘
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

주목할 점은 생명주기 꼬리표에는 이름이나 타입이 부여되지 않는다. 이 제약은 앞으로 우리가 살펴보게 되는 것처럼 생명주기가 사용될 수 있게 한다.

results matching ""

    No results matching ""