as |
Comme |
|---|---|
| Rust | |
Syntaxe
| expression as type |
| use chemin::NomOriginal as NouveauNom; |
| extern crate my_crate as cool_crate; |
Paramètres
| Nom | Description |
|---|---|
| expression | Ce paramètre permet d'indiquer la valeur ou l'expression à convertir ou à renommer dans une opération as. |
| type | Ce paramètre permet de spécifier le type cible vers lequel l'expression sera convertie lors d'un cast primitif (expression as type). |
| chemin::NomOriginal | Ce paramètre permet de désigner l'élément original (fonction, type, module, crate) dans une instruction use ou extern crate. |
| NouveauNom | Ce paramètre permet de renommer l'élément importé via use ou extern crate, pour éviter les conflits ou simplifier son usage. |
Description
Ce mot réservé permet d'effectuer un castre primitif, lever l'ambiguïté du trait spécifique contenant un élément ou renommer les éléments en cours d'utilisation et extern crate des instructions.
Remarques
Permet de convertir entre les types ou renommer une importation.
Il est généralement utilisé pour transformer des types primitifs en d'autres types primitifs, mais il a d'autres utilisations, notamment la transformation de pointeurs en adresses, d'adresses en pointeurs et de pointeurs en d'autres pointeurs :
En général, tout transtypage réalisable via l'attribution du type peut également être effectué avec as. Ainsi, au lieu d'écrire let x: u32 = 123, vous pouvez écrire let x = 123 as u32 (remarque : let x: u32 = 123 serait préférable dans ce cas). L'inverse n'est cependant pas vrai : l'utilisation explicite de as autorise quelques coercitions supplémentaires qui ne sont pas autorisées implicitement, comme la modification du type d'un pointeur brut ou la transformation de fermetures en pointeurs bruts.
as peut être considéré comme la primitive de From et Into : as ne fonctionne qu'avec les primitives (u8, bool, str, pointeurs,...), tandis que From et Into fonctionnent également avec des types comme String ou Vec.
as peut également être utilisé avec l'espace réservé _ lorsque le type de destination peut être inféré. Notez que cela peut entraîner des erreurs d'inférence et qu'un tel code devrait généralement utiliser un type explicite pour plus de clarté et de stabilité. Ceci est particulièrement utile lors de la conversion de pointeurs avec as *const _ ou as *mut _, bien que la méthode cast soit recommandée plutôt que as *const _ et qu'il en soit de même pour as *mut _ : ces méthodes clarifient l'intention.
as est également utilisé pour renommer les importations dans les instructions use et extern crate :