【发布时间】:2015-02-08 15:28:33
【问题描述】:
看代码:
let add_one = |&: x| { 1 + x };
我知道x是闭包参数,但是&:在闭包中是什么意思?
【问题讨论】:
看代码:
let add_one = |&: x| { 1 + x };
我知道x是闭包参数,但是&:在闭包中是什么意思?
【问题讨论】:
这是目前 Rust 的一个未充分记录(并且过时,请参阅评论)的部分。我所知道的最好的参考是博文Purging proc:
由于当前的推理方案有限,您有时需要明确指定您想要的三个 fn 特征中的哪一个。 (有些人也更喜欢这样做。)当前的语法是使用前导
&:、&mut:或:,有点像“匿名参数”:
// Explicitly create a `Fn` closure.
foo(|&:| { ... })
// Explicitly create a `FnMut` closure.
foo(|&mut:| { ... })
// Explicitly create a `FnOnce` closure.
foo(|:| { ... }) // (ERROR)
警告:我们仍然有可能在 1.0 之前更改
&:/&mut:/:语法;如果我们能够充分改进推理,我们甚至可能完全摆脱它。
看起来它在#21843 中被删除了!感谢您指出这一点,@swizard!
【讨论】: