MST

星途 面试题库

面试题:Rust数组比较:自定义类型与优化

定义一个自定义类型`Point`,包含`x`和`y`两个`i32`类型的字段。创建两个数组,每个数组包含多个`Point`实例。实现一个高效的比较方法,用于判断这两个数组是否相等,同时要考虑如何通过实现合适的trait和使用Rust的特性(如借用检查、所有权等)来优化比较过程,避免不必要的内存拷贝和提高运行效率。
31.9万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
#[derive(Debug, PartialEq)]
struct Point {
    x: i32,
    y: i32,
}

fn arrays_are_equal(arr1: &[Point], arr2: &[Point]) -> bool {
    if arr1.len() != arr2.len() {
        return false;
    }
    arr1.iter().zip(arr2.iter()).all(|(p1, p2)| p1 == p2)
}

在上述代码中:

  1. 定义了 Point 结构体,并通过 derive(Debug, PartialEq) 为其自动实现了 DebugPartialEq trait,PartialEq trait 用于比较两个 Point 实例是否相等,避免手动逐个字段比较。
  2. arrays_are_equal 函数接受两个 Point 数组的引用,先比较长度,若长度不同则直接返回 false,提高效率。然后使用 iter 方法创建迭代器,通过 zip 方法将两个迭代器的元素一一配对,最后使用 all 方法判断所有配对的 Point 实例是否都相等。由于使用的是引用,避免了不必要的内存拷贝。