Section courante

A propos

Section administrative du site

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 :

  1. let thing1: u8 = 89.0 as u8;
  2. assert_eq!('B' as u32, 66);
  3. assert_eq!(thing1 as char, 'Y');
  4. let thing2: f32 = thing1 as f32 + 10.5;
  5. assert_eq!(true as u8 + thing2 as u8, 100);

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 :

  1. use std::{mem as memory, net as network};
  2. // Vous pouvez désormais utiliser les noms «memory» et «network» pour faire référence à «std::mem» et «std::net».


Dernière mise à jour : Vendredi, le 1er Août 2025