gpt4 book ai didi

arrays - 如何将f64数组重新解释为f64元素的元组?

转载 作者:行者123 更新时间:2023-12-03 11:40:54 26 4
gpt4 key购买 nike

我有一个代码生成器,它生成对返回Vec<f64>的函数的调用。我需要将这些值分配给一组变量,最好的方法似乎是这些变量的元组。像这样的东西:

let array: &[f64] = &my_function(3);
let (a, b, c): (f64, f64, f64) = unsafe { std::mem::transmute(*array) };

playground (uncompillable)

我没有弄清楚如何编写不安全的部分以使其被编译器接受。

我宁愿避免按项目分配生成项目,因为性能在这里非常重要。

能做到吗?元组的内存布局是否与数组兼容?

最佳答案

期间,您无法执行此操作; tuples do not have a guaranteed memory layout,因此您无法从可能匹配或可能不匹配的内容进行转换。

我会进行正常的模式匹配:

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]
}

也可以看看:
  • What is the memory layout of structs, tuples and tuple structs?
  • How to convert a tuple of references to a reference of a tuple?
  • Is it possible to control the size of an array using the type parameter of a generic?
  • 关于arrays - 如何将f64数组重新解释为f64元素的元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60582097/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com