Skip to content
Published at:
  • 闭包(Closures),一个可以储存在变量里的类似函数的结构
  • 迭代器(Iterators),一种处理元素序列的方式
  • 如何使用这些功能来改进第十二章的 I/O 项目。
  • 这两个功能的性能。(剧透警告: 他们的速度超乎你的想象!)

Closures

一种可以捕获外部变量的的匿名函数

Rust 根据其如何使用环境中变量来推断我们希望如何引用环境

  • 所有闭包都能被调用一次,所以所有闭包都实现了FnOnce
  • 那些并没有移动被捕获变量的所有权到闭包内的闭包也实现了FnMut
  • 而不需要对被捕获的变量进行可变访问的闭包则也实现了Fn
  • 显示指定实现FnOnce,在闭包前加上move关键字,比如多线程中

闭包和函数的区别: 闭包能捕获外部变量

move关键字:值捕获

闭包的本质:匿名结构休

Fn/FnMut/FnOnce:指的是匿名结构体中,函数self的类型,对应&self/&mut self/self

  • 消费适配器(consuming adaptors)
  • 迭代器适配器(iterator adaptors)

iter

sum

map

collect

filter

zip