Rust 为何a&;str称之为铁锈切片?

Rust 为何a&;str称之为铁锈切片?,rust,Rust,这让我觉得它是其他字符串的子字符串,而它只是堆栈分配的字符串。我对它有错误的理解吗 当它只是一个堆栈分配的字符串时 这并不完全正确。字符串片段(&str)在概念上由两部分组成: 指向字符串开头的指针 字符串中的字节数 指针可以引用堆栈、堆甚至常量程序数据中的数据 它之所以称为字符串片,是因为它镜像了一个常规片(&[T]),它由两部分组成:指针和长度 在引擎盖下,字符串是u8(&[u8])的一部分,但它有一个非常重要的保证:字节序列是有效的UTF-8 其他字符串的子字符串 请注意,您可以获取某个对

这让我觉得它是其他字符串的子字符串,而它只是堆栈分配的字符串。我对它有错误的理解吗

当它只是一个堆栈分配的字符串时

这并不完全正确。字符串片段(
&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];
    

    我想是的。看一看字符串片段,实际上,字符串片段是这样调用的,因为它们可以引用内存中某个字符串的子字符串。这与常规切片相同,后者指的是数组的一部分。