Hello world
Analysons maintenant le “Hello world” de Rust :
fn main() { println!("Hello world"); // Modifiez-moi ! }
On voit d’abord qu’une déclaration de fonction commence par l’abbréviation fn
.
Comme Python, Rust suit la règle de
Stroustrup :
les abbréviations sont acceptées pour des actions très fréquentes, comme
la déclaration de fonctions.
Plusieurs choix syntaxiques sont communs avec C++ :
- Comme en C++, la fonction principale s’appelle
main()
. Mais en Rust, elle n’est pas obligée de retournerint
, plusieurs types sont acceptés grâce à une conversion versint
. - Les blocs sont délimités par des accolades ouvrantes
{
et fermantes}
, ce qui est un bon compromis entre concision et évitement des bugs d’indentation. - Les instructions sont terminées par un point virgule, ce qui permet de placer ses sauts de ligne où l’on veut quand on clarifie une expression complexe.
- Les commentaires utilisent les syntaxes
//
et/* */
. Contrairement à la version C++, il est possible d’imbriquer le second type de commentaire indéfiniment.
Et pour terminer, on voit que pour écrire du texte sur stdout
, terminé par une
fin de ligne, on utilise println!()
. Le point d’exclamation à la fin de
l’appel nous renseigne sur le fait que println
n’est pas une fonction, mais
une macro. Cela lui permet d’accepter en entrée un mini-langage
spécifique avec des
fonctionnalités comme les arguments nommés et l’interpolation de variables :
#![allow(unused)] fn main() { // Argument positionnel println!("Bonjour, {} !", "Dave"); // Argument nommé println!("Mon nom est {nom}.", nom = "Personne"); // Interpolation de variable let reponse = 42; println!("La réponse est {reponse}, mais quelle est la question ?"); }