【发布时间】:2023-02-03 01:22:52
【问题描述】:
[u8] 和 Vec<u8> 有什么区别?
【问题讨论】:
标签: rust
[u8] 和 Vec<u8> 有什么区别?
【问题讨论】:
标签: rust
[u8] 表示内存中某处未调整大小的连续序列 u8。作为一种“未调整大小”的类型,您不能将它存储在变量中,也不能将它传递给函数,因此它本身并不是很有用。它的主要用途是创建切片引用、智能指针和泛型。
&[u8] 是引用这样一个序列的“切片引用”,还包含有关其长度的信息。引用由两个机器字宽的“胖指针”表示,由指向数据的指针和数据的长度组成。它是&str 的基础。
Box<[u8]> 类似于 &[u8],除了它拥有底层内存,即序列由 Box::new() 构造函数堆分配并在 Drop 上释放。它是Box<str> 的基础。
Vec<u8> 类似于Box<[u8]>,只是它额外存储了一个“容量”计数,使其成为三个机器字宽。单独存储的容量允许有效地调整基础序列的大小。它是String 的基础。
【讨论】: