是否更好地构造值以访问属性或使用其名称?

时间:2016-11-20 19:03:49

标签: rust

Rust by Example chapter about methods中,我看到以下代码来计算Rectangle的区域:

struct Rectangle {
    p1: Point,
    p2: Point,
}

impl Rectangle {
    fn area(&self) -> f64 {
        let Point { x: x1, y: y1 } = self.p1;
        let Point { x: x2, y: y2 } = self.p2;
        ((x1 - x2) * (y1 - y2)).abs()
    }
}

就个人而言,我会做类似的事情:

fn area(&self) -> f64 {
    ((self.p1.x - self.p2.x) * (self.p1.y - self.p2.y)).abs()
}

教程代码是否比我的好,如果是,为什么?

1 个答案:

答案 0 :(得分:4)

我担心你完全忽略了这一点。

示例只是关于演示特定语法;它并不试图声称此语法是实现此特定任务的最佳方式

语法示例总是有限的,特别是在自包含的情况下,对于片段而言,它们的好处并不是立竿见影的。这并不意味着语法必然是多余的。

仔细检查的语法在两种情况下都很有用:

  • 它可以通过快速命名少数相关元素进行计算来降低噪音
  • 它还允许解构,消耗左侧(如果不是Copy)并一举命名其成分;实际上,这只不过是模式匹配的一个实例(等等)