(Note : je ne connais pas Rust, il est donc possible que ma syntaxe ne soit pas propre)
La syntaxe 'a permet de définir une contrainte dans la signature de la fonction. Ce qui est important ici n'est pas d'ajouter l'information sur la durée de vie : ce qui est important est que cette information de durée de vie soit la même sur l'ensemble des termes passés en arguments.
Tu pourrais avoir cette fonction qui prend en paramètre des arguments avec des durées de vie différents :
fnlongest<'a,b>(x: &'astr,y: &'bstr)->
Le problème qui se pose ici est de définir le résultat de la fonction. Garde à l'esprit qu'il faut que cela soit exprimable dans le langage. Comment représentes-tu prends la durée de vie la plus mauvaise des deux ? (C'est peut être possible, j'ignore a quel point le système de type de rust est avancé. Il faudrait pour cela que la durée de vie puisse être représenté par un type arbitraire).
On pourrait décider de prendre arbitrairement l'un ou l'autre :
fnlongest<'a,b>(x: &'astr,y: &'bstr)-> &'bstr
mais le compilateur risque de ne pas aimer et lever l'erreur en indiquant une incohérence dans le code.
Le plus simple est donc d'imposer cette contrainte : les deux types doivent avoir la même durée de vie, et c'est à l'appelant de s'assurer que cette contrainte est respectée.
# Unification des types
Posté par chimrod (site web personnel) . En réponse au message Rust : lapin compris les durées de vie. Évalué à 4.
(Note : je ne connais pas Rust, il est donc possible que ma syntaxe ne soit pas propre)
La syntaxe
'apermet de définir une contrainte dans la signature de la fonction. Ce qui est important ici n'est pas d'ajouter l'information sur la durée de vie : ce qui est important est que cette information de durée de vie soit la même sur l'ensemble des termes passés en arguments.Tu pourrais avoir cette fonction qui prend en paramètre des arguments avec des durées de vie différents :
Le problème qui se pose ici est de définir le résultat de la fonction. Garde à l'esprit qu'il faut que cela soit exprimable dans le langage. Comment représentes-tu prends la durée de vie la plus mauvaise des deux ? (C'est peut être possible, j'ignore a quel point le système de type de rust est avancé. Il faudrait pour cela que la durée de vie puisse être représenté par un type arbitraire).
On pourrait décider de prendre arbitrairement l'un ou l'autre :
mais le compilateur risque de ne pas aimer et lever l'erreur en indiquant une incohérence dans le code.
Le plus simple est donc d'imposer cette contrainte : les deux types doivent avoir la même durée de vie, et c'est à l'appelant de s'assurer que cette contrainte est respectée.