¿Es posible tener una función genérica que tome un número arbitrario de parámetros?

Resuelto Makogan asked hace 9 meses • 0 respuestas

Sé que el óxido no tiene variadics. Y sé que las macros son una forma posible de emularlas. Sin embargo, estoy interesado en cómo se pueden utilizar los rasgos para este propósito.

Por ejemplo, el sistema Bevy ECS puede aceptar funciones con combinaciones de parámetros arbitrarios en su firma, siempre que los argumentos implementen un rasgo determinado.

Me gustaría entender mejor cómo funciona este mecanismo.

Makogan avatar Feb 16 '24 05:02 Makogan
Aceptado

En realidad, no es un número arbitrario de parámetros de tipo; Rust no admite esto (todavía). La solución más común es utilizar una macro para generar implementaciones para una cantidad de parámetros de tipo hasta un límite fijo. Aquí se implementa , por ejemplo, Reflecthasta 12 parámetros de tipo mediante una macro_rules!macro . Esto también es común en todo stdlib, que también lo usa (por ejemplo, para implementar y viceversa , como máximo para 12).From<(T, ..., T)> for [T; N]N

BallpointBen avatar Feb 16 '2024 05:02 BallpointBen