arrays - 如何将 f64 数组重新解释为 f64 元素的元组?
问题描述
我有一个代码生成器,它产生对返回的函数的调用Vec<f64>
。我需要将这些值分配给一组变量,最好的方法似乎是这些变量的元组。像这样的东西:
let array: &[f64] = &my_function(3);
let (a, b, c): (f64, f64, f64) = unsafe { std::mem::transmute(*array) };
我不知道如何编写不安全的部分以使其被编译器接受。
我更愿意避免为每个项目分配生成项目,因为性能在这里非常重要。
这可以做到吗?元组的内存布局是否与数组兼容?
解决方案
你不能这样做,期间;元组没有保证的内存布局,因此你不能从可能匹配或不匹配的东西中转换。
我会做正常的模式匹配:
fn main() {
let values = my_function(3);
dbg!(&values);
let (a, b, c) = match &*values {
[a, b, c] => (a, b, c),
_ => panic!(),
};
dbg!(a, b, c);
}
fn my_function(count: usize) -> Vec<f64> {
vec![3.14_0f64; count]
}
也可以看看:
推荐阅读
- amazon-web-services - AWS AppSync Lambda 解析程序 $context.identity 为空
- javascript - 如何更改 d3-legend 中文本的字体大小?
- javascript - 无法使用 mysql 包连接到远程 MySQL 数据库
- python - 如何使用 Python 请求将图像发送到 Strapi?
- ruby-on-rails - Rails 密码重置邮件测试未定义方法“html_safe”错误(使用 Clearance gem)
- node.js - 在 node.js 中合并两个 opus 流
- python - 如何使用 numpy 中的指定索引从 3D 矩阵中获取元素?
- javascript - 定时器完成时需要通知,在下一个间隔之前
- javascript - 如何使用 Gatsby 或 React 功能组件处理从数据库中的异步获取
- python - pd.df.groupby() 永远不会发生的事件 (0%)