« Par exemple, l’addition à virgule flottante n’est pas associative, donc une somme comme a + b + c + d doit être évalué dans l’ordre associatif de gauche dans lequel il est analysé, comme ((a + b) + c) + d« , a noté l’équipe de Rust. « Si vous écrivez la même somme sous forme d’une chaîne de algebraic_add appels, le compilateur est libre de le réorganiser, peut-être comme (a + b) + (c + d) d’évaluer simultanément les sommes partielles. Une vectorisation de boucle plus large est souvent également possible en utilisant ces méthodes algébriques.

Les méthodes sont non déterministes, car le compilateur est libre de choisir différentes optimisations, mais elles ne provoquent jamais de comportement indéfini, a déclaré l’équipe Rust.

Rust 1.98.0 introduit également le formatage des entiers mis en mémoire tampon. Tous les types entiers primitifs ont désormais un format_into méthode qui prend un &mut NumBuffer paramètre, qui est un tampon suffisamment grand pour contenir le format décimal de n’importe quelle valeur du type. Le format_into La méthode renvoie le formaté &str avec une durée de vie empruntée au tampon, et contourne une grande partie de la répartition dynamique des données tamponnées write! formatage, amélioration des performances.

A lire également