MST
星途 面试题库

面试题:Rust中如何在高级数据结构中使用函数指针实现排序

假设有一个自定义结构体`Point`,包含`x`和`y`两个`i32`类型的字段。请使用Rust函数指针在`Vec<Point>`上实现一个排序功能,使得`Point`首先按`x`从小到大排序,如果`x`相同则按`y`从小到大排序。给出具体代码实现。
32.6万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
struct Point {
    x: i32,
    y: i32,
}

fn main() {
    let mut points: Vec<Point> = vec![
        Point { x: 2, y: 3 },
        Point { x: 1, y: 4 },
        Point { x: 2, y: 1 },
    ];

    let compare_points: fn(&Point, &Point) -> std::cmp::Ordering = |a, b| {
        if a.x != b.x {
            a.x.cmp(&b.x)
        } else {
            a.y.cmp(&b.y)
        }
    };

    points.sort_by(compare_points);

    for point in points {
        println!("x: {}, y: {}", point.x, point.y);
    }
}