MST

星途 面试题库

面试题:Rust结构体模式匹配基础与简单错误处理

假设有一个Rust结构体`Point`,包含`x`和`y`两个`i32`类型的字段。请编写代码,使用模式匹配来判断一个`Point`实例的`x`和`y`值是否相等,如果不相等,返回一个自定义的错误类型`PointError`,并在`main`函数中调用该函数并处理可能出现的错误。
43.8万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
// 自定义错误类型
#[derive(Debug)]
struct PointError;

// Point结构体
struct Point {
    x: i32,
    y: i32,
}

// 检查x和y是否相等的函数
fn check_point(p: Point) -> Result<(), PointError> {
    match p {
        Point { x, y } if x == y => Ok(()),
        _ => Err(PointError),
    }
}

fn main() {
    let point1 = Point { x: 5, y: 5 };
    let point2 = Point { x: 5, y: 10 };

    match check_point(point1) {
        Ok(()) => println!("The x and y values of point1 are equal."),
        Err(e) => println!("Error in point1: {:?}", e),
    }

    match check_point(point2) {
        Ok(()) => println!("The x and y values of point2 are equal."),
        Err(e) => println!("Error in point2: {:?}", e),
    }
}