假设我有一个长度为5且容量为10的向量1
。以下是否会调用未定义的行为?
v: Vec<T>
答案 0 :(得分:4)
是的,这是未定义的。来自Rust Reference的第6.1.3.2.3节:
以下是所有Rust代码中禁止的行为列表,包括不安全的块和不安全的函数。类型检查可以保证这些问题永远不会由安全代码引起。
- ...
- 读取undef(未初始化)内存
- ...
p.offset(5)
是未定义的内存,你必须阅读才能交换它。
当然,我并没有真正看到你的问题的重点,因为即使它被定义了,操作也是一个无操作。我怀疑这是XY Problem的一件神器,你有一个实际的问题要解决。