Які типи іржі позначаються одним апострофом?


89

Я зустрічав ряд типів у Rust, позначених одним апострофом:

'static
'r
'a

Яке значення має цей апостроф? Можливо, це модифікатор посилань ( &)? Загальний тип набору, характерний для посилань? Я не уявляю, де ховається документація для цього.


1
вони називаються тривалістю життя: static.rust-lang.org/doc/master/guide-lifetimes.html
Аржан

Посилання в попередньому коментарі більше не працює. Не знаю, чи це еквівалентно: doc.rust-lang.org/book/lifetimes.html
Еллен Спертус

Посилання Еллен також перестало працювати - ось воно нове (станом на червень 2019 року): doc.rust-lang.org/book/ch10-03-lifetime-syntax.html

Відповіді:


71

Це імена Руста.

Цитуючи іржу Мова програмування :

Кожне посилання в Rust має термін служби, тобто область дії, для якої це посилання є дійсним. Більшість періодів життя є неявними та виведеними, як і більшість типів часу. Подібно до того, як нам доводиться анотувати типи, оскільки можливі декілька типів, бувають випадки, коли тривалість посилань може бути пов’язана кількома різними способами, тому Руст потребує, щоб ми анотували відносини, використовуючи загальні параметри життя, щоб він міг переконатися, що фактичні посилання, що використовуються під час виконання, точно будуть дійсними.

Прижиттєві анотації не змінюють, скільки часу живуть будь-які з цих посилань. Так само, як функції можуть приймати будь-який тип, коли підпис вказує загальний параметр типу, функції можуть приймати посилання з будь-яким часом життя, коли підпис визначає загальний параметр життя. Те, що роблять анотації протягом усього життя, - це пов’язувати періоди життя кількох посилань один на одного.

Анотації протягом усього життя мають трохи незвичний синтаксис: назви параметрів за весь час життя повинні починатися з апострофа '. Імена параметрів життя, як правило, є малими, і, як і загальні типи, їх імена, як правило, дуже короткі. 'aце ім’я, яке більшість людей використовують за замовчуванням. Анотації &довічних параметрів йдуть після посилання, а пробіл відокремлює анотацію за весь час від типу посилання.

Зазначено інший спосіб, що час життя наближається до періоду виконання, протягом якого дані, на які вказує посилання, є дійсними. Компілятор Rust консервативно зробить висновок про найкоротший термін служби, щоб бути безпечним. Якщо ви хочете сказати компілятору, що посилання живе довше, ніж найкоротша оцінка, ви можете назвати його, сказавши, що вихідне посилання, наприклад, має той самий час життя, що і дане посилання на вхід.

Тривалість 'staticжиття - це особливе життя, найдовше за все життя - протягом програми. Типовим прикладом є рядкові "літерали", які завжди будуть доступні протягом життя програми / модуля.

Ви можете отримати більше інформації з цієї колоди , починаючи з слайда 29.

«Життя в Русті» також детально обговорює життя.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.