13.4.8 elision
몇 가지 생명주기 패턴들이 압도적으로 보편적이기에 대여 검사자는 암시적으로 그들을 추가하여 타이핑을 줄이고 가독성을 향상시킨다. 이렇게 암시적으로 추가하는 동작을 생략이라 부른다. 생략은 Rust에만 존재하는데 이유는 이들 패턴이 보편적이기 때문이다.
다음 코드는 몇 가지 생략에 대한 예제를 보여준다. 생략의 더 포괄적인 설명이 필요하면, 이 책의 lifetime elision를 살펴보자.
// `elided_input`과 `annotated_input`은 본질적으로 동일한 선언자를 갖는데 // 이유는 `elided_input`의 생명주기가 컴파일러에 의해 생략되었기 때문이다. fn elided_input(x: &i32) { println!("`elided_input`: {}", x) } fn annotated_input<'a>(x: &'a i32) { println!("`annotated_input`: {}", x) } // 마찬가지로, `elided_pass`와 `annotated_pass`도 동일 선언인데 // 왜냐하면 `elided_pass`에 암시적으로 생명주기가 추가되기 때문이다. fn elided_pass(x: &i32) -> &i32 { x } fn annotated_pass<'a>(x: &'a i32) -> &'a i32 { x } fn main() { let x = 3; elided_input(&x); annotated_input(&x); println!("`elided_pass`: {}", elided_pass(&x)); println!("`annotated_pass`: {}", annotated_pass(&x)); }