Rust

Lifetimes

Анотації lifetime, правила elision, lifetime 'static, lifetime у struct, lifetime bounds

20 питань зі співбесід·
Mid-Level
1

Яке основне призначення lifetime у Rust?

Відповідь

Lifetime дозволяють компілятору перевіряти, що всі reference є дійсними протягом усього їх використання. Вони гарантують, що reference ніколи не переживе дані, на які посилається, запобігаючи dangling reference. Borrow checker використовує lifetime для перевірки безпеки пам'яті під час компіляції, без накладних витрат під час виконання.

2

Який синтаксис використовується для анотації lifetime на reference?

Відповідь

Lifetime анотуються апострофом, за яким слідує ім'я, зазвичай маленька літера, як-от 'a. Синтаксис &'a T означає reference на T з lifetime 'a. За домовленістю для узагальнених lifetime використовують 'a, 'b, 'c, але після апострофа можна використати будь-який допустимий ідентифікатор.

3

Що означає lifetime 'static у Rust?

Відповідь

Lifetime 'static вказує, що reference може існувати протягом усього часу роботи програми. String literal на кшталт "hello" автоматично мають lifetime 'static, оскільки вони вбудовані в binary. Глобальні константи та значення, створені за допомогою Box::leak, також мають цей lifetime. Зауваження: 'static не означає, що значення існувало від початку програми, а що воно може існувати до кінця.

4

Скільки правил elision для lifetime компілятор Rust застосовує автоматично?

5

Чому функція fn longest(x: &str, y: &str) -> &str не компілюється?

+17 питань зі співбесід

Опануй Rust для наступної співбесіди

Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.

Почни безкоштовно