// 定义结构体Point
struct Point {
x: f64,
y: f64,
}
// 定义接受闭包的函数
fn operate_on_points<F>(closure: F)
where
F: Fn(Point, Point) -> Point,
{
let p1 = Point { x: 2.0, y: 3.0 };
let p2 = Point { x: 4.0, y: 5.0 };
let result = closure(p1, p2);
println!("Result: x = {}, y = {}", result.x, result.y);
}
fn main() {
// 实现闭包逻辑
let multiply_points = |p1: Point, p2: Point| Point {
x: p1.x * p2.x,
y: p1.y * p2.y,
};
// 调用函数并传入闭包
operate_on_points(multiply_points);
}
- 首先定义了
Point
结构体,包含x
和y
两个f64
类型的字段。
- 然后定义了
operate_on_points
函数,该函数接受一个闭包作为参数,闭包接受两个Point
实例并返回一个新的Point
实例。
- 在
main
函数中,实现了闭包multiply_points
,它将两个Point
实例的对应字段相乘。
- 最后调用
operate_on_points
函数并传入multiply_points
闭包。