#[derive(Copy, Drop, PartialEq)]
struct Point {
x: u32,
y: u32,
}
impl PointMul of Mul {
fn mul(lhs: Point, rhs: Point) -> Point {
Point {
x: lhs.x * rhs.x,
y: lhs.y * rhs.y,
}
}
}
let p1 = Point { x: 2, y: 3 };
let p2 = Point { x: 1, y: 0 };
let p3 = p1 * p2;
assert!(p3 == Point { x: 2, y: 0 });