• # Premières impressions

    Posté par . En réponse à la dépêche Rust 1.0, entrée dans la période stable. Évalué à 7.

    L'annonce de la sortie imminente de la version 1.0 de ce langage m'avait motivée à m'y pencher un peu plus (j'avais regardé un peu suite aux différentes dépêches, mais vu les évolutions d'une version à l'autre j'avais préféré attendre que ça se stabilise).

    Bilan : je trouve les fonctionnalités un peu "annexes" (le pattern matching, l'inférence de type) plutôt sympathiques, certes c'est pas "nouveau" mais quand même plutôt bien foutu.

    Par contre la façon de gérer la mémoire... ouah, c'est quand même vraiment particulier, et autant le reste j'ai l'impression d'avoir déjà vu des éléments dans un langage ou un autre, autant là, il y a un coup de main à prendre. Je pense notamment à la notion de "lifetime", qu'il faut parfois déclarer en plus du type des variables pour indiquer que la référence que renvoie une fonction ne sera plus valable une fois que tel argument sera détruit. Une fois le truc un peu compris, ça paraît une bonne idée, mais ça m'a demandé de réfléchir un peu plus que la plupart des autres langages à la syntaxe "à la C". (Ce qui me rend dubitative sur l'attrait de Rust pour les fans de langages dynamiques : pour le coup le on a un compilateur que je trouve quand même fort psychorigide, ce qui est une qualité dans une logique de sécurité du code mais me paraît demander quand même une autre approche qu'un langage dynamique.)

    Globalement je trouve l'approche du langage intéressante, même s'il y a des choses qui me convainquent moyennement pour l'instant (notamment le fait que quand tu fais un appel à ma_fonction (x) ça peut être soit une copie, soit un move qui va transférer la «propriété» de la variable x à la fonction ma_fonction, ce qui empêche d'utiliser à nouveau la variable par la suite dans la fonction appelante). Peut-être que c'est une question d'habitude à l'usage, cela dit.