web-dev-qa-db-fra.com

Quels sont les types Rust dénotés avec une seule apostrophe?

J'ai rencontré un certain nombre de types dans Rust dénoté avec une seule apostrophe:

'static
'r
'a

Quelle est la signification de cette apostrophe? C'est peut-être un modificateur de références (&)? Typage générique spécifique aux références? Je n'ai aucune idée où se cache la documentation pour cela.

78
Greg Malcolm

Ce sont les durées de vie nommées de Rust.

Citant de Le Rust langage de programmation :

Chaque référence dans Rust a une durée de vie, qui est la portée pour laquelle cette référence est valide. La plupart des durées de vie sont implicites et inférées, tout comme la plupart des types de temps sont inférés. lorsque nous devons annoter des types car plusieurs types sont possibles, il existe des cas où les durées de vie des références peuvent être liées de différentes manières, donc Rust a besoin de nous pour annoter les relations en utilisant des paramètres de durée de vie génériques afin qu'il puisse s'assurer que les références réelles utilisées lors de l'exécution seront définitivement valides.

Les annotations à vie ne changent pas la durée de vie des références impliquées. De la même manière que les fonctions peuvent accepter n'importe quel type lorsque la signature spécifie un paramètre de type générique, les fonctions peuvent accepter des références avec n'importe quelle durée de vie lorsque la signature spécifie un paramètre de durée de vie générique. Les annotations de durée de vie font le lien entre les durées de vie de plusieurs références.

Les annotations à vie ont une syntaxe légèrement inhabituelle: les noms des paramètres de durée de vie doivent commencer par une apostrophe '. Les noms des paramètres de durée de vie sont généralement tous en minuscules et, comme les types génériques, leurs noms sont généralement très courts. 'a est le nom que la plupart des gens utilisent par défaut. Les annotations des paramètres de durée de vie vont après le & d'une référence et un espace sépare l'annotation de durée de vie du type de la référence.

Autrement dit, une durée de vie approximative de la durée d'exécution pendant laquelle les données vers lesquelles une référence pointe est valide. Le compilateur Rust inférera de manière conservatrice la durée de vie la plus courte possible pour être sûr. Si vous voulez dire au compilateur qu'une référence vit plus longtemps que l'estimation la plus courte, vous pouvez la nommer en disant que la référence de sortie , par exemple, a la même durée de vie qu'une référence d'entrée donnée.

Le 'static La durée de vie est une durée de vie spéciale, la plus longue de toutes les durées de vie - pour la durée du programme. Un exemple typique sont les "littéraux" de chaîne qui seront toujours disponibles pendant la durée de vie du programme/module.

Vous pouvez obtenir plus d'informations sur ce jeu de diapositives , en commençant par la diapositive 29.

Lifetimes in Rust traite également des durées de vie en profondeur.

46
quux00