我有点搞不懂铁 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中看到字符串和切片是如何工作的有点奇怪
1条答案
按热度按时间7y4bm7vi1#
其次,我不明白文档中说“切片是一个连续内存块的视图”是什么意思
你说得对这里的文档非常混乱。它讨论的是对slice的引用,因为slice本身不是视图,我们可以通过
Box<[T]>
的存在来证明。但是,虽然&[T]
在技术上准确的名称是“slice reference”(或“slice ref”,“reference to slice”),但文档在许多地方使用术语“slice”来描述它。有一个开放的GitHub问题来修复这里和其他地方的术语:#101353的数据。