&& T(引用参考)在Rust中是什么意思?

时间:2019-03-13 17:20:00

标签: reference rust

我以前认为这与lvalue reference collapsing in C++类似,因此从语法的角度来看,&&T应该与&T相同,但是在编译以下代码后我感到困惑:

fn check_ref(x: &i32) -> i32 {
    println!("{}", x);
    x + 2
}

fn main() {
    for i in &[-3, 2, 39] {
        // i is &i32
        check_ref(i); // this works
        check_ref(&i); // this works
        check_ref(&&i); // this works

        assert_eq!(i, &i); // error[E0277]: can't compare `i32` with `&i32`
    }
}

是不是多个引用都折叠了,或者ref-to-ref是否具有其他特定含义?

assert_eq!的此编译器错误是否仅是由于Rust宏的一些技巧造成的?

0 个答案:

没有答案