什么和&实际上呢?

时间:2015-06-10 02:45:33

标签: rust

我想了解Rust的参考资料。

fn main() {
    let x: i32 = 0;
    println!("{}", x+1); // this works
    println!("{}", (&x)+1); // this works
    //println!("{}", (&(&x))+1); // but this failed
}

我得到了什么:

    1
    1

&实际上做了什么?为什么&x可以添加为整数但不是&(&x)

1 个答案:

答案 0 :(得分:5)

ComObj1获取操作数的引用。这可以被认为是找到存储该值的存储器地址。

您的示例有效,因为&是使用Add trait实现的,{{3}}具有以下变体:

+

也就是说,您可以添加任何引用和非引用对。但是,您的第二个示例将具有两个间接级别(impl Add<i32> for i32 impl<'a> Add<i32> for &'a i32 impl<'a> Add<&'a i32> for i32 impl<'a, 'b> Add<&'a i32> for &'b i32 ),并且&&i32特征未针对该多个级别的引用实现。