Resumen del capítulo
Los genéricos en Zig permiten escribir funciones y structs que aceptan diferentes tipos de datos. El compilador usa estas definiciones como plantillas para generar versiones especializadas de código en tiempo de compilación.
- Las funciones builtin como @TypeOf, @typeInfo, @hasField, @typeName, permiten inspeccionar tipos en tiempo de compilación (comptime) y generar código según lo que estos builtin detecten sobre los datos.
- Con @compileError podemos forzar errores en tiempo de compilación de tal manera que cuando no se cumplan ciertos requisitos la compilación será interrumpida.
- Funciones anónimas y encapsuladas se definen dentro de structs temporales y permiten aislar la lógica auxiliar sin contaminar el scope más amplio.
- Construimos tipos a partir de otros en tiempo de compilación usando structs genéricos. Estos los creamos en función de los parámetros que recibimos en una función genérica que devuelve type.
- @This permite referirse al type actual desde un método del mismo - útil justo cuando componemos structs genéricos.
- anyopaque se usa con punteros a tipos desconocidos (borrados), permitiendo manejar datos de diferentes tipos.
- @ptrCast y @alignCast nos permiten recuperar el type borrado junto con la información obtenida por introspección.