我在 Rust 编译器语义中有点迷失,但我试图找到成本最低的方法,即通过每个字段的某个名称简单地引用数字元组数组,并在函数之间传递它。更具体地说,我从外部源收到一个
[(f64, f64, f64)]
形式的列表,每个列表都有一个名称。我希望能够按名称引用字段,但不将它们转换为某种附加类型(除非这是零成本)。
例如我可以遍历并将它们包装成:
struct NameStruct {
foo: f64,
bar: f64,
baz: f64,
}
但是我认为这会产生运行数组并包装它们的成本?而类型别名似乎无法命名其中的各个字段。
我确信我缺少一些简单的东西!
使用元组结构来避免单独包装每个元素的运行时开销,然后创建类型别名。
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);
}