如何在不使用匹配的情况下从元组设置结构成员?

时间:2016-08-15 22:53:10

标签: rust

我想从函数返回的元组初始化两个字段:

#[derive(Clone, Copy, Debug)]
struct Point {
    x: f64,
    y: f64,
    z: f64,
}

fn f() -> (f64, f64) {
    (5., 6.)
}

fn main() {
    let mut p = Point {
        x: 1.,
        y: 2.,
        z: 3.,
    };
    println!("{:?}", p);
    match f() {
        (x, y) => {
            p.x = x;
            p.y = y;
        }
    }
    println!("{:?}", p);
}

明显的代码(p.x, p.y) = f()没有编译,所以我必须使用match。您是否知道如何使match赋值更易于阅读?

我想

  1. 每次分配两个字段时,只调用一次f
  2. 右侧fp.xp.y及左侧,match现在

1 个答案:

答案 0 :(得分:1)

这是怎么回事?

let (x, y) = f();
p.x = x;
p.y = y;

您可以将let中的类似模式添加到match es中。