str内存表示



为什么Rust中的String具有固定大小和可变大小的str?文档将str描述为:

指向某些字节的指针,以及长度

指针+长度听起来像是固定大小。

String只是一个普通的结构,它没有内置在语言中,也没有使用任何(实质性的(编译器魔法。String只是Vec<u8>的包装。Vec是指向缓冲区的指针,以及跟踪缓冲区大小的大小和容量。因此,String在堆上的大小是usize的三倍,同时还有可变量的堆存储。

CCD_ 8是";指向一些字节的指针和长度";。这是一个固定大小的胖指针。注意与号:&strstr不同。str是一种动态大小的类型,它直接引用字符串的字节,没有任何引用或间接。在大多数情况下,您不能直接处理str,因为它们没有固定的大小,因此必须在引用后面处理。

总结:

  • 这个引号指的是&str,它是指向某些UTF-8字节的胖指针
  • str指的是一些UTF-8字节,如果没有一些间接性,通常无法处理

最新更新