Подтвердить что ты не робот

Каковы типы ржавчины, обозначенные одним апострофом?

Я встречал несколько типов в Rust, обозначенных одним апострофом:

'static
'r
'a

Каково значение этого апострофа? Может быть, это модификатор ссылок (&)? Типичная типизация для ссылок? Я не знаю, где скрывается документация для этого.

4b9b3361

Ответ 1

Это времена жизни, названные Рустом.

Цитата из Язык программирования ржавчины:

Каждая ссылка в Rust имеет время жизни, которое является областью действия, для которой эта ссылка действительна. Большинство сроков жизни являются неявными и выводятся, как и большинство типов времени. Аналогично тому, как мы должны аннотировать типы, поскольку возможны несколько типов, бывают случаи, когда время жизни ссылок может быть связано несколькими различными способами, поэтому Rust требует от нас аннотировать отношения, используя общие параметры времени жизни, чтобы он мог убедиться, что фактические ссылки, используемые во время выполнения, определенно будут действительны.

Аннотации по продолжительности жизни не изменяют, как долго любая из ссылок участие вживую. Точно так же функции могут принимать любой тип, когда подпись определяет параметр типового типа, функции могут принимать ссылки с любым временем жизни, когда подпись указывает общий параметр времени жизни. Какие аннотации на протяжении всей жизни связаны с времена жизни нескольких ссылок друг на друга.

Обозначения времени жизни имеют слегка необычный синтаксис: имена параметры времени жизни должны начинаться с апострофа '. Имена параметры жизненного цикла, как правило, являются строчными и похожими на общие типы, их имена обычно очень короткие. 'a - это имя, которое большинство людей используют как по умолчанию. Аннотации параметров времени жизни идут после &ссылки и пробел отделяет аннотацию на всю жизнь от тип ссылок.

Говоря иначе, время жизни приближается к диапазону выполнения, в течение которого действительны данные, на которые указывает ссылка. Компилятор Rust будет консервативно заключать, что самый короткий срок службы может быть безопасным. Если вы хотите сообщить компилятору, что ссылка проживает дольше, чем кратчайшая оценка, вы можете назвать ее, заявив, что выходная ссылка, например, имеет такое же время жизни, что и заданная входная ссылка.

Время жизни 'static - это особое время жизни, самое длинное из всех жизней - на протяжении всей программы. Типичным примером являются строковые "литералы", которые всегда будут доступны в течение жизни программы/модуля.

Вы можете получить дополнительную информацию от эту слайд-панель, начиная со слайда 29.

Lifetimes in Rust также обсуждает времена жизни на некоторой глубине.