Rust 1.66

Par:
fredericmazue

ven, 16/12/2022 - 11:53

L'équipe du langage Rust a annoncé la disponibilité de Rust 1.66. Cette nouvelle version apporte les discriminants explicites sur les énumérations avec champs.

Auparavant, vous pouviez utiliser des discriminants explicites sur des énumérations avec des représentations, mais uniquement si aucune de leurs variantes n'avait de champs. Avec Rust 1.66, les énumérations avec des représentations entières peuvent désormais utiliser des discriminants explicites, même lorsqu'elles ont des champs. Pat exemple

#[repr(u8)]
enum Foo {
    A(u8),
    B(i8),
    C(bool) = 42,
}

On remarque encore l'arrivée de la fonction nouvellement stabilisée core::hint::black_box. Cette fonction prend la valeur que vous lui transmettez et la renvoie directement. En interne,  le compilateur traite black_box comme une fonction qui pourrait faire n'importe quoi avec son entrée et retourner n'importe quelle valeur (comme son nom l'indique).

Est-ce qu'une telle fonction sert à quelque chose ? :-) Oui cette fonction s'avère utile pour désactiver les optimisations. Si par exemple vous avez besoin d'examiner le code machine produit par le compilateur, vous pouvez utiliser core::hint::black_box pour désactiver les optimisations. Ainsi vous évitez que le code que vous souhaitez examiner soit tronqué ou supprimé par le compilateur.