为什么索引VEC返回值,而不是索引承诺的参考?

发布于 2025-01-24 00:04:56 字数 674 浏览 0 评论 0 原文

index 特征的文档说 .index()方法将引用引用到 output 关联类型( link

fn index(&self, index: Idx) -> &Self::Output;

://doc.rust-lang.org/stable/std/pops/trait.index.html“ rel =“ noreferrer USIZE 索引,输出 t 。因此,我希望以下片段中的变量 a 具有类型& i32

let v = vec![0];
let a = v[0];

但是, a 的类型是 i32 。为什么?我正在学习生锈,据我了解,生锈要求您在任何地方都明确,并且永远不会执行 value< - >参考隐含地转换。因此,问题。

The documentation for the Index trait says that the .index() method returns a reference to the Output associated type (link):

fn index(&self, index: Idx) -> &Self::Output;

For Vec<T> and the usize index, Output is T. So, I expect the variable a in the following snippet to have the type &i32.

let v = vec![0];
let a = v[0];

However, the type of a is i32. Why? I am learning Rust and, as far as I understand, Rust requires you to be explicit everywhere and never performs value<->reference conversions implicitly. Hence the question.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

安静被遗忘 2025-01-31 00:04:56

There's an automatic dereference added when the brackets are de-sugared. The std::ops::Index documentation says, "container[index] is actually syntactic sugar for *container.index(index)."

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文