Variadic Generics ideas that won't work for Rust
10 months ago
- #Programming Languages
- #Rust
- #Variadic Generics
- Rust中的可变泛型将允许为具有任意数量字段的元组实现trait。
- 讨论了三种常见但有缺陷的可变泛型提案:使用迭代器、可变递归和一等类型。
- 使用迭代器的方法会失败,因为无法保证元组成员都实现了所需的trait,而且元组映射操作很笨拙。
- 受C++启发的可变递归方案将逻辑分散到多个trait实现中,导致开发者体验差且编译器面临挑战。
- 受Zig启发的一等类型方案需要对Rust类型系统进行大规模修改,并可能引发单态化后错误。
- 文章总结指出,可变泛型需要一种语法来对所有元组成员施加trait约束,并保持类型安全地遍历它们。
- Rust语言团队和社区成员一致认为,应该开发真正的可变泛型而非采用上述有缺陷的替代方案。