Введение
В этом лабе мы исследуем концепцию элимирования в Rust, где проверщик ссылок позволяет опускать общие шаблоны времени жизни, чтобы повысить читаемость и уменьшить количество набираемых символов.
Примечание: Если в лабе не указано имя файла, вы можете использовать любое имя файла, которое хотите. Например, вы можете использовать
main.rs, скомпилировать и запустить его с помощьюrustc main.rs &&./main.
Элиминация
Некоторые шаблоны времени жизни встречаются чрезвычайно часто, и поэтому проверщик ссылок позволяет вам их опускать, чтобы сократить количество набираемых символов и повысить читаемость. Это называется элиминацией. Элиминация существует в Rust только потому, что эти шаблоны распространены.
Следующий код демонстрирует несколько примеров элиминации. Для более полного описания элиминации см. раздел "Элиминация времени жизни" в книге.
// `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));
}
Резюме
Поздравляем! Вы завершили лабу по Элиминации. Вы можете практиковаться в более многих лабах в LabEx, чтобы улучшить свои навыки.