在Rust中是否未定义暂时将未初始化的值交换为向量?

时间:2015-08-03 03:21:24

标签: vector rust swap undefined-behavior

假设我有一个长度为5且容量为10的向量1。以下是否会调用未定义的行为?

v: Vec<T>

1 个答案:

答案 0 :(得分:4)

是的,这是未定义的。来自Rust Reference的第6.1.3.2.3节:

  

以下是所有Rust代码中禁止的行为列表,包括不安全的块和不安全的函数。类型检查可以保证这些问题永远不会由安全代码引起。

     
      
  • ...
  •   
  • 读取undef(未初始化)内存
  •   
  • ...
  •   

p.offset(5)是未定义的内存,你必须阅读才能交换它。

当然,我并没有真正看到你的问题的重点,因为即使它被定义了,操作也是一个无操作。我怀疑这是XY Problem的一件神器,你有一个实际的问题要解决。