在Rust中将结构解压缩为L值元组

时间:2019-04-29 20:25:02

标签: struct rust tuples

我具有以下结构:

struct Pixel{x:f64, y:f64, dx:f64, dy:f64}

我将此结构作为函数的参数。我想减少打字并解压:

fn foo(pixel:Pixel){
    let (x, y, dx, dy) = pixel;
}

此代码无法编译。是否有语法语法可以避免无休止的pixel.xpixel.dx等?我想有一些简单的方法可以将结构的值“提取”(别名)到我的函数中。而且我想避免let x = pixel.x; let dx = pixel.dx等的冗长内容。

有一种简洁的方法吗?

1 个答案:

答案 0 :(得分:3)

建议在这里仔细阅读chapter 18 of The Rust Programming Language。可以使用模式匹配来解构数组,枚举,结构和元组。

let Pixel { x, y, dx, dy } = pixel;

甚至可以在函数的参数自变量中使用它。

fn foo(Pixel { x, y, dx, dy }: Pixel) {

}