gpt4 book ai didi

indexing - 切片索引在 Rust 中如何工作?

转载 作者:行者123 更新时间:2023-11-29 08:08:44 24 4
gpt4 key购买 nike

我想知道 Rust 中有哪些切片。事实证明,它只是一个带有数据指针和内部大小的结构。我查看了索引的来源并且我已经 found this :

impl<T> ops::Index<usize> for [T] {
type Output = T;

fn index(&self, index: usize) -> &T {
// NB built-in indexing
&(*self)[index]
}
}

我不是 Rust 专家,但 &(*self) 对我来说似乎是一个指针,据我所知,Rust 中没有指针索引。那么这个索引是如何工作的呢?它只是一个编译器内置的东西吗?

最佳答案

Is it just a compiler built-in thing?

是的。源代码注释也这么说。 [T] 是一个未定大小的类型,无论如何都需要一些额外的规则。例如,未确定大小的类型不能存在于堆栈中(很难处理)。但是对未确定大小的类型的引用由一个指针和一个大小组成(特别是“完成类型的东西”)。

但是请注意,表达式的计算方式如下:&((*self)[index])。这意味着 self(类型 &[T])被取消引用为类型 [T],然后被索引。这将返回一个 T,但我们只需要对它的引用,因此是 &

关于indexing - 切片索引在 Rust 中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40460806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com