在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()
}
教程代码是否比我的好,如果是,为什么?
答案 0 :(得分:4)
我担心你完全忽略了这一点。
示例只是关于演示特定语法;它并不试图声称此语法是实现此特定任务的最佳方式。
语法示例总是有限的,特别是在自包含的情况下,对于片段而言,它们的好处并不是立竿见影的。这并不意味着语法必然是多余的。
仔细检查的语法在两种情况下都很有用:
Copy
)并一举命名其成分;实际上,这只不过是模式匹配的一个实例(等等)