为什么Rust中的String具有固定大小和可变大小的str?文档将str
描述为:
指向某些字节的指针,以及长度
指针+长度听起来像是固定大小。
String
只是一个普通的结构,它没有内置在语言中,也没有使用任何(实质性的(编译器魔法。String
只是Vec<u8>
的包装。Vec
是指向缓冲区的指针,以及跟踪缓冲区大小的大小和容量。因此,String
在堆上的大小是usize
的三倍,同时还有可变量的堆存储。
CCD_ 8是";指向一些字节的指针和长度";。这是一个固定大小的胖指针。注意与号:&str
与str
不同。str
是一种动态大小的类型,它直接引用字符串的字节,没有任何引用或间接。在大多数情况下,您不能直接处理str
,因为它们没有固定的大小,因此必须在引用后面处理。
总结:
- 这个引号指的是
&str
,它是指向某些UTF-8字节的胖指针 str
指的是一些UTF-8字节,如果没有一些间接性,通常无法处理