最近我 问 关于如何将一堆具有相同签名的闭包放入Rust中的向量中。来自Haskell背景,它似乎有点复杂,Rust闭包每个都有自己独特的类型,需要一个特征来代表它们。在Haskell中,lambda是通过其签名键入的,如果签名相同,则类型相同。
Rust闭包和Haskell lambda函数之间是否存在语义差异导致这些差异?
最近我 问 关于如何将一堆具有相同签名的闭包放入Rust中的向量中。来自Haskell背景,它似乎有点复杂,Rust闭包每个都有自己独特的类型,需要一个特征来代表它们。在Haskell中,lambda是通过其签名键入的,如果签名相同,则类型相同。
Rust闭包和Haskell lambda函数之间是否存在语义差异导致这些差异?
Rust选择使用不同类型有两个性能优势:
您也可以选择使用 Box<Fn>
代替。这会花费堆分配并导致间接调用,但作为交换,每个签名只有一种类型。