为什么我们需要一个参考符号,每当我们创建一个片 rust

qyyhg6bp  于 2023-08-05  发布在  其他
关注(0)|答案(1)|浏览(87)

我有点搞不懂铁 rust 切片的概念。我知道[T]是一个未知大小的T类型元素的连续块,我们需要一个指向该数据的指针来访问它。我不明白的是,如果我们运行以下代码:
第一个月
编译器是否试图访问'arr'中的第一个和第二个元素并将其存储在堆栈中,但由于它不知道大小,因此它不能这样做,因此我们被迫使用这样的指针引用'arr'中的第一个和第二个元素:
let slice: [u8] = &arr[1..3];
其次,我不明白文档中说slices are a view onto a contiguous block of memory
str(一种切片类型)是如何查看一个连续的内存块的?&str(对一个切片的引用)不是一个连续内存块的视图吗?
我有C++的背景,所以在Rust中看到字符串和切片是如何工作的有点奇怪

7y4bm7vi

7y4bm7vi1#

其次,我不明白文档中说“切片是一个连续内存块的视图”是什么意思
你说得对这里的文档非常混乱。它讨论的是对slice的引用,因为slice本身不是视图,我们可以通过Box<[T]>的存在来证明。但是,虽然&[T]在技术上准确的名称是“slice reference”(或“slice ref”,“reference to slice”),但文档在许多地方使用术语“slice”来描述它。
有一个开放的GitHub问题来修复这里和其他地方的术语:#101353的数据。

相关问题