El equipo de Rust ha implementado la familia de características 'Generic Const Arguments' (GCA), un conjunto de herramientas diseñadas para superar las limitaciones de los Generics Const en la versión estable del lenguaje. Esta iniciativa, desarrollada tras las discusiones en RustFest Zürich de 2024, busca permitir expresiones más complejas que involucran parámetros genéricos dentro de los argumentos const, eliminando la necesidad de depender exclusivamente de constantes concretas o del crate typenum.
Actualmente, los Generics Const solo soportan parámetros genéricos puros o constantes concretas, lo que impide la creación de arrays o tuplas dinámicas. La nueva familia GCA introduce soporte para la construcción de estructuras de datos, tuplas y arrays mediante la macro gca!. Por ejemplo, permite definir parámetros como Bar usando gca!(Foo { field: N }).
Un aspecto clave de esta implementación es la semántica específica de los argumentos gca!(): permiten el uso de parámetros genéricos dentro de la expresión, algo prohibido en argumentos const estándar, pero restringen el tipo de expresiones permitidas (no soportan llamadas a funciones o aritmética directa). Para resolver esto, se introduce la característica gca_const_items, que requiere la bandera -Znext-solver. Esta permite definir constantes asociadas que el sistema de tipos puede razonar de forma transparente, permitiendo que expresiones como N + 1 se utilicen indirectamente en el sistema de tipos, algo que no es posible con definiciones opacas.
