struct - 在 Rust 中将结构解包为左值元组

标签 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;让 dx = pixel.dx

有没有简洁的方法呢?

最佳答案

细读chapter 18 of The Rust Programming Language这里推荐。可以使用模式匹配来解构数组、枚举、结构和元组。

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

这甚至可以用在函数的参数参数中。

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

}

关于struct - 在 Rust 中将结构解包为左值元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55910367/

相关文章:

Python 元组列表到 int 列表

c - 删除链表尾部 : Why a specific approach won't work

arrays - 指定函数将未指定长度的数组作为参数的正确方法是什么?

rust - 哪些目标功能默认使用 rustc?

struct - 在不克隆的情况下将一个结构数组映射到Rust中的另一个结构数组

python - 连接嵌套元组

c - 函数看不到结构内部结构的字段

C - 访问结构数组

c - c中的步幅是什么

python - 将一个列表的元素多次映射到第二个列表的元素