【问题标题】:What's the &: part in a closure argument list?闭包参数列表中的 &: 部分是什么?
【发布时间】:2015-02-08 15:28:33
【问题描述】:

看代码:

let add_one = |&: x| { 1 + x };

我知道x是闭包参数,但是&:在闭包中是什么意思?

【问题讨论】:

    标签: closures rust


    【解决方案1】:

    这是目前 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!

    【讨论】:

    猜你喜欢
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 2011-03-31
    • 2021-03-04
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    相关资源
    最近更新 更多