是否可以有一个带有任意数量参数的泛型函数?

问题描述 投票:0回答:1

我知道 Rust 没有变量。我知道宏是模拟它们的一种可能方法。然而,我对如何将特征用于此目的感兴趣。

例如,Bevy ECS 系统可以采用签名中具有任意参数组合的函数,前提是参数实现给定的特征。

我想更好地了解这个机制是如何运作的。

generics rust variadic-functions
1个回答
0
投票

它实际上不是任意数量的类型参数; Rust 还不支持这一点。最常见的解决方案是使用宏来生成多个类型参数的实现,最多可达某个固定限制。例如,通过

Reflect
here
实现最多 12 个类型参数。这在整个 stdlib 中也很常见,它也使用它(例如,实现 macro_rules!,反之亦然
,对于 
From<(T, ..., T)> for [T; N]
最多 12 个)。
    

© www.soinside.com 2019 - 2024. All rights reserved.