Arrays 在Rust中转换数组维度的安全方法

Arrays 在Rust中转换数组维度的安全方法,arrays,rust,Arrays,Rust,我有一个程序,其中有一个大的查找表。为了节省时间,我只是从一个文件中加载它,而不是每次程序运行时都生成适当的值 当我从文件缓冲区读取值时,我得到一个u8数组。我的查找表是u8的二维数组。现在我正在使用std::mem::transmute将一维数组转换为二维数组。然而,我注意到社区普遍不赞成使用std::mem::transmute 蜕变是极其不安全的。有很多方法可以导致此函数的未定义行为。蜕变应该是绝对的最后手段 目前,这是我所使用的大型阵列中唯一有效的方法。有更安全或推荐的方法吗?这可能是

我有一个程序,其中有一个大的查找表。为了节省时间,我只是从一个文件中加载它,而不是每次程序运行时都生成适当的值

当我从文件缓冲区读取值时,我得到一个
u8
数组。我的查找表是
u8
的二维数组。现在我正在使用
std::mem::transmute
将一维数组转换为二维数组。然而,我注意到社区普遍不赞成使用
std::mem::transmute

蜕变是极其不安全的。有很多方法可以导致此函数的未定义行为。蜕变应该是绝对的最后手段


目前,这是我所使用的大型阵列中唯一有效的方法。有更安全或推荐的方法吗?

这可能是自以为是的,但我只想在数组周围包装一个新类型,并实现一些特性,使其行为类似于2D数组,例如
Index
@E\u net4。用不同的格式写两次数据没有多大意义。唯一困难的步骤是使用模将一维索引转换为二维索引;Rust只有一个余数函数。你能从文件中依次读取每个子数组吗?@Aaron3468我现在无法重做查找方式,因为有很多代码假设存在多维数组。如果你真的需要将1D数组重新解释为2D数组,听起来像是
mem::transmute
是你需要的工具;你只需要注意它的使用是否正确。