Open HunDunDM opened 4 years ago
·Fn,表示闭包以不可变借用的方式来捕获环境中的自由变量,同时也表示该闭包没有改变环境的能力,并且可以多次调用。对应&self。 ·FnMut,表示闭包以可变借用的方式来捕获环境中的自由变量,同时意味着该闭包有改变环境的能力,也可以多次调用。对应&mut self。 ·FnOnce,表示闭包通过转移所有权来捕获环境中的自由变量,同时意味着该闭包没有改变环境的能力,只能调用一次,因为该闭包会消耗自身。对应self。
FnOnce具有改变环境的能力,同时个人觉得更合适的描述如下,供参考:
·Fn,表示闭包至多只存在以不可变借用的方式来捕获的环境中的自由变量,同时也表示该闭包没有改变环境的能力,并且可以多次调用。对应&self。 ·FnMut,表示闭包存在以可变借用的方式来捕获的环境中的自由变量,同时意味着该闭包有改变环境的能力,也可以多次调用。对应&mut self。 ·FnOnce,表示闭包存在通过转移所有权来捕获的环境中的自由变量,同时意味着该闭包没可能有改变环境的能力,取决于是否存在以可变借用的方式来捕获的环境中的自由变量,只能调用一次,因为该闭包会消耗自身。对应self。
$ rustc -V rustc 1.38.0-nightly (c43d03a19 2019-08-14)
@HunDunDM 感谢详细的反馈。
这个修改说明版面里放不下了,移动到第二版中修复。
应该是使用捕获变量的方式。 下面这个代码是以转移所有权的方式捕获变量,但是是以不可变借用的方式使用的 Code
页码与行数
文本或排版错误
FnOnce具有改变环境的能力,同时个人觉得更合适的描述如下,供参考:
相关代码
示例代码与其MIR
Rust版本