【问题标题】:Reference to reference in rust [duplicate]参考参考 rust [重复]
【发布时间】:2019-07-15 10:46:27
【问题描述】:
fn count_occur(v: &Vec<i32>, val: i32) -> usize {
    v.into_iter().filter(|&&x| x == val).count()
}

fn main() -> () {
    let v1 : Vec<i32> = vec![1,2,3, 4,5,6];
    for &item in &v1 {
        count_occur(&v1, item);
    }  
}

有人能解释一下为什么lambda 需要使用&amp;&amp;x(我的意思是为什么需要双重引用——我不明白为什么传递给 lambda 的元素是对引用的引用)

【问题讨论】:

标签: rust


【解决方案1】:

IntoIterator implementation for &'a Vec 正在返回 &amp;T 的项目。

filter's predicate 定义为where P: FnMut(&amp;I::Item) -&gt; bool。它引用迭代器的项目,因此是双重引用。

【讨论】:

    猜你喜欢
    • 2021-03-09
    • 1970-01-01
    • 2012-11-22
    • 2022-11-15
    • 2018-10-01
    • 2020-07-13
    • 2020-11-02
    • 2012-07-24
    • 2015-07-09
    相关资源
    最近更新 更多