【译】理解Rust中的Futures(二) (2)

where是一个能够让我们添加类型约束的关键字。对于F类型参数,我们可以在内部定义约束map<U, F: FnOnce(Self::Output) -> U,但是使用 where 语句可读性会更好。

FnOnce(Self::Output) -> U是一个函数的类型定义,该函数接收当前类型的Output并返回任意类型U。FnOnce是函数 trait 中的一个,其他还包括FnMut和Fn。FnOnce是用起来最简单的,因为编译器可以保证这个函数只被调用一次。它使用环境中用到的值并获取其所有权。Fn和FnMut分别以不可变和可变的方式借用环境中值的引用。所有的闭包都实现了FnOncetrait,并且其中一些没有移动值的闭包还实现了FnMut和Fntrait。这是 Rust 做的最酷的事情之一,允许对闭包和第一类函数参数进行真正有表达力的使用。Rust book 中的相关内容[6]值得一读。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypjwd.html