Bonjour à tous
Vu l'engouement quasi magique pour ce "nouveau" langage qu'est Rust (il peut concurrencer C, aussi simple que Python, aussi rapide que C et surtout plus sécurisé que ces deux langages combinés) et ne voulant pas mourir idiot, j'ai décidé de... je ne vais pas dire "m'y mettre" mais regarder au-moins ce que ça a à offrir.
Donc suivant en cela mes propres principes (être débutant n'empêche pas de lire les tutos, etc), je cherche un tuto, en trouve un qui semble assez bien conçu (il explique les choses progressivement) donc l'ouvre et me met à le lire.
Je fais le classique "Hello World", qui fonctionne (yeah je suis maintenant un rustacé) et continue.
Et là j'arrive sur un truc qui parle de variables par défaut immuables, nécessitant un "mut" devant pour les rendre modifiables. Ok, pourquoi pas (c'est vrai que pas mal de bugs proviennent de valeurs qui ont changé alors qu'elles n'auraient pas dû... même si cela fait perdre un peu de son sens au vocable "vari-able"). Plus un petit exemple qui le montre parfaitement
Voilà, pas de "mut" après "let" donc ça compile pas, normal. Je remplace let x = 5 par let mut x = 5 et là ça compile. Bon, ok.
Code rust : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 fn main() { let x = 5; println!("La valeur de x est : {}", x); x = x+1; println!("La valeur de x est : {}", x); }
Puis je continue à lire et là je vois que dans le tuto, on fait du "let" à tire-larigot sur des variables crées sans "mut" et que ça fonctionne.
Je reprends mon exemple et j'écris
Et là aussi ça fonctionne !!!???!!!
Code rust : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 fn main() { let x = 5; println!("La valeur de x est : {}", x); let x = x+1; println!("La valeur de x est : {}", x); }
Bon ben alors c'est quoi le truc? Pourquoi on dit que les variables sont immuables alors qu'il sufit d'un "let" pour qu'elles ne le soient pas? Pourquoi avoir besoin de "mut" alors que "let" le fait?
Et (tant qu'à faire) je vois aussi qu'on peut créer des constantes qui sont (dixit tuto) comme des variables immuables avec quelques restrictions
- une constante est toujours immuable (interdit de mettre un "mut" dessus)
- une constante ne peut pas recevoir de calcul issu d'une variable (et effectivement ayant tenté const Y:u16 = x+1 j'ai une belle erreur)
Mais alors, en y réfléchissant, n'ayant finalement que des inconvénients par rapport aux variables immuables (et aucun avantage annexe n'est indiqué par le tuto), je me dis que la constante ne sert pas vraiment à grand chose par rapport à la variable immuable non ? Enfin si elle l'est vraiment (immuable)...
Donc voilà mes deux questions de super grand débutant. Merci de votre indulgence.
Partager