Index
特质的文档说明.index()
方法返回与Output
关联类型相关的引用(链接):
fn index(&self, index: Idx) -> &Self::Output;
对于 Vec<T>
和 usize
索引,Output
是 T
。因此,我期望以下片段中的变量 a
具有类型 &i32
。
let v = vec![0];
let a = v[0];
然而,
a
的类型是 i32
。为什么呢?我正在学习 Rust,就我所理解的来看,Rust 要求您在任何地方都必须明确,并且永远不会隐式执行 value<->reference
转换。因此我有这个问题。
&
(例如&v [0]
)。 - kmdrekox[y]
实际上是一个显式的解引用,定义为*(x+y)
,因此Rust选择让其语法以许多人所期望的方式工作是有道理的。 - Peter Cordes