rust mem::transmute的扁平化数组安全吗?

gk7wooem  于 2023-06-30  发布在  其他
关注(0)|答案(1)|浏览(106)

这样的扁平化数组对于在基元类型中构建安全吗?

let a = [[0u32;4];4];
let b = std::mem::transmute::<[[u32;4];4], [u32; 16]>(a);

在什么条件下这是安全的?

6qfn3psc

6qfn3psc1#

数组是Rust中为数不多的保证内存布局的数据结构之一。数组[T; N]保证在内存中被布局为TN连续示例。因此,[[T; M]; N]保证具有与[T; M * N]相同的内存布局,并且对于任何类型的T来说,从一个到另一个的转换都是安全的。

相关问题