¿Es posible tener una función genérica que tome un número arbitrario de parámetros?
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.
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, Reflect
hasta 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