像这样展平数组对于构建基元类型安全吗?
let a = [[0u32;4];4];
let b = std::mem::transmute::<[[u32;4];4], [u32; 16]>(a);
这是安全的,在什么条件下?
像这样展平数组对于构建基元类型安全吗?
let a = [[0u32;4];4];
let b = std::mem::transmute::<[[u32;4];4], [u32; 16]>(a);
这是安全的,在什么条件下?
数组是Rust中为数不多的具有保证内存布局的数据 struct 之一.保证数组[T; N]
在存储器中被布置为T
的N
个连续实例.因此,[[T; M]; N]
被保证具有与[T; M * N]
相同的存储器布局,并且从一个到另一个的转换对于任何类型T
都是安全的.