Rust 1.65 et les types génériques associés

Par:
fredericmazue

ven, 04/11/2022 - 13:11

Le projet Rust a annoncé la disponibilité de Rust 1.65. L'équipe indique que cette mouture apporte une réalisation monumentale, pour reprendre ses termes : les types génériques associés (ou GAT)  sont maintenant stables, après plus de six ans de travaux.

De quoi s'agit-il ? Succinctement les types génériques associés permettent d'avoir des génériques (type, durée de vie ou const) sur les types associés. Cela donne plus de possibilités de généricités dans les programmes Rust. Par exemple, vous pouvez déjà avoir des génériques sur des alias de type autonomes et sur des fonctions dans des traits. Maintenant, vous pouvez avoir des génériques sur les alias de type dans les traits (simplement appelés les types associés). Voici un exemple de ce à quoi ressemblerait un trait avec un GAT :

trait LendingIterator {
    type Item<'a> where Self: 'a;

    fn next<'a>(&'a mut self) -> Self::Item<'a>;
}

Le projet Rust souligne qu'en général, les GAT fournissent une base fondamentale pour une vaste gamme de modèles et d'API.

Un billet très complet sur le blog de Rust détaille ces types génériques associés et leur utilisation.