迭代器查找 - 引用针而不是取消引用迭代项

时间:2015-03-28 07:23:22

标签: rust

请考虑以下代码:

fn main() {
    let greater_than_42 = (0..100).find(|x| *x > 42);
    match greater_than_42 {
        Some(x) => println!("{}", x),
        None => println!("no numbers found"),
    }
}

如果我改为:

    let greater_than_42 = (0..100).find(|x| x > &42);

它会比较内存地址而不是值吗?

1 个答案:

答案 0 :(得分:2)

简单地尝试它将清楚地证明情况并非如此。

在Rust中,原始指针(*const T*mut T)是内存地址重要的唯一地方。

参考文献(&T&mut T)以这种方式透明;如果你想比较内存地址(例如,看看两个不可变引用是否属于同一个位置,虽然这是Rust的所有权模型的实际应用非常有限),你需要先将它们转换为原始指针。