对于 Rust 来说不起作用的可变泛型想法

主要观点:长期关注如何为 Rust 编程语言添加可变参数泛型,当前讨论激烈且一些观点反复出现,此文旨在提前阻止某些观点。
关键信息:

  • 介绍了可变参数(variadic)在编程中的含义,以及 Rust 中的可变参数泛型示例,如实现 trait 等。
  • 提出三个常被提及的关于可变参数泛型的提案并分析其不可行性:

    • 仅使用迭代器:无法保证元组成员实现特定 trait,映射元组也很繁琐,不能实现如Clone等常用 trait。
    • 可变递归:使用递归实现会导致编译器需进行大量内联和符号生成,元组解构与引用配合不佳,元组解构/连接难以表示,关联类型过于不透明,开发体验差。
    • 一流类型:会带来大量后单态化错误,不利于类型推断,且 Rust 维护者不想重写整个语言。
  • 总结可变参数泛型的核心用例及所需最小特征,指出类似提案不可行,得到 Josh Triplett 和 oli-obk 的支持,作者将撰写 RFC 并期待相关工作开始。
    重要细节:
  • 文中通过多个代码示例详细阐述各个提案的问题,如Tuple特质的使用、不同 trait 的实现等。
  • 提及相关讨论的链接Discussion on r/rust.
阅读 12
0 条评论