当我只是一个堆栈分配的字符串时,它让我觉得它是其他字符串的子字符串。我对它有错误的理解吗?
答案 0 :(得分:14)
当它只是一个堆栈分配的字符串
这不完全正确。字符串切片(&str
)在概念上由两件事构成:
指针可以引用堆栈上,堆上的数据,甚至是常量程序数据中的数据。
它被称为字符串切片,因为它镜像一个常规切片(&[T]
),它是相同的两个部分:指针和长度。
在幕后,字符串是u8
(&[u8]
)的一片,但它有一个非常重要的保证:字节序列是有效的UTF-8。
其他字符串的子字符串
请注意,您可以使用"整个子字符串"或者"整个切片"某事,它不必严格地小。例如:
let test_scores = [0, 10, 100];
let all_scores = &test_scores[..]; // or &test_scores[0..3]
let some_scores = &test_scores[0..1];