如果你在看官方锈病文档,你看到特质Fn来源于FnMut,或实现Fn,你必须实现FnMut(和之后FnOnce,因为FnMut还提炼出来的).
为什么会这样?我根本无法理解.是因为你可以把每个人Fn称为FnOnce或FnMut?
对此最好的参考是Rust博客帖子中出色的Finding Closure.我引用一些重要部分:
有三个特征,所以有七个非空的特征可以实现......但实际上只有三个有趣的配置:
Fn,FnMut和FnOnce,FnMut而且FnOnce,- 只
FnOnce.为什么?好吧,三个闭包特征实际上是三个嵌套集:每个实现的闭包也
Fn可以实现FnMut(如果&self works,&mut self也可以工作;证明:)&*self,同样每个闭包实现FnMut也可以实现FnOnce.此层次结构在类型级别强制执行
| 归档时间: |
|
| 查看次数: |
212 次 |
| 最近记录: |