【问题标题】:What is the difference between [u8] and Vec<u8> on rust? [duplicate][u8] 和 Vec<u8> 在 rust 上有什么区别? [复制]
【发布时间】:2023-02-03 01:22:52
【问题描述】:

[u8]Vec&lt;u8&gt; 有什么区别?

【问题讨论】:

    标签: rust


    【解决方案1】:

    [u8] 表示内存中某处未调整大小的连续序列 u8。作为一种“未调整大小”的类型,您不能将它存储在变量中,也不能将它传递给函数,因此它本身并不是很有用。它的主要用途是创建切片引用、智能指针和泛型。

    &amp;[u8] 是引用这样一个序列的“切片引用”,还包含有关其长度的信息。引用由两个机器字宽的“胖指针”表示,由指向数据的指针和数据的长度组成。它是&amp;str 的基础。

    Box&lt;[u8]&gt; 类似于 &amp;[u8],除了它拥有底层内存,即序列由 Box::new() 构造函数堆分配并在 Drop 上释放。它是Box&lt;str&gt; 的基础。

    Vec&lt;u8&gt; 类似于Box&lt;[u8]&gt;,只是它额外存储了一个“容量”计数,使其成为三个机器字宽。单独存储的容量允许有效地调整基础序列的大小。它是String 的基础。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      • 2022-07-06
      • 2020-06-06
      • 1970-01-01
      相关资源
      最近更新 更多