Existential Types in Rust
a year ago
- #Type Systems
- #Rust
- #Async Programming
- Rust自2017年起就致力于添加显式存在类型(existential types),这类类型虽然存在但不能在其作用域外直接操作。
- 存在类型反转了泛型类型的控制权——由函数决定具体类型,而调用者将其视为未知类型。
- Rust当前通过`impl Trait`提供有限的存在类型形式,允许函数返回实现某特性的类型而无需指定具体类型。
- `impl Trait`能有效抽象API细节且无需运行时间接访问,特别适用于异步函数和闭包场景。
- Rust 1.75(2023年12月)允许特性方法使用`impl Trait`作为返回值,但与完整的存在类型相比仍有限制。
- 未来改进计划支持在类型别名和结构体中使用存在类型,从而实跨函数保证返回相同类型等模式。
- 存在类型将通过允许在结构中存储`impl Future`值来提升异步编程的易用性,这也是Rust 2024版本的重点方向。