在 Rust 中“命名”元组列表的运行时开销最低的方法是什么?

问题描述 投票:0回答:1

我在 Rust 编译器语义中有点迷失,但我试图找到成本最低的方法,即通过每个字段的某个名称简单地引用数字元组数组,并在函数之间传递它。更具体地说,我从外部源收到一个

[(f64, f64, f64)]
形式的列表,每个列表都有一个名称。我希望能够按名称引用字段,但不将它们转换为某种附加类型(除非这是零成本)。

例如我可以遍历并将它们包装成:

struct NameStruct {
   foo: f64,
   bar: f64,
   baz: f64,
}

但是我认为这会产生运行数组并包装它们的成本?而类型别名似乎无法命名其中的各个字段。

我确信我缺少一些简单的东西!

rust
1个回答
0
投票

使用元组结构来避免单独包装每个元素的运行时开销,然后创建类型别名。

type NamedTuple = (f64, f64, f64);

fn process_data(data: &[NamedTuple]) {
    for &(foo, bar, baz) in data {
        // Access foo, bar, and baz here
        println!("foo: {}, bar: {}, baz: {}", foo, bar, baz);
    }
}

fn main() {
    let data: Vec<NamedTuple> = vec![
        (1.0, 2.0, 3.0),
        (4.0, 5.0, 6.0),
        // Add more data here
    ];

    process_data(&data);
}
© www.soinside.com 2019 - 2024. All rights reserved.