[英]Why does indexing a Vec return a value instead of a reference as promised by the Index?
Index
trait 的文档说.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
转换。 因此问题。
取消括号时会添加自动取消引用。 std::ops::Index
文档说,“ container[index]
实际上是*container.index(index)
的语法糖。”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.