Rust 什么是&;真的吗?

Rust 什么是&;真的吗?,rust,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)?&

我试图理解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)

&
引用操作数。这可以看作是查找存储值的内存地址

您的示例之所以有效,是因为
+
是使用实现的,它具有以下变体:

i32的impl Add i32的impl
非常感谢!那么为什么rust不实现添加trait以供参考呢?@siyu是的-这就是我粘贴的代码片段。但是,它没有实现双重引用和值的特性,这就是您的案例。但为什么它会让事情变得如此混乱?(我一眼就不知道某个东西是整数还是对整数的引用)第一条注释中的输入错误:doest->doessiyu@doubly-inderected-references实际上在现实代码中非常罕见。您可以使用
*x
手动取消引用。