面试题答案
一键面试#[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)
}
在上述代码中:
- 定义了
Point
结构体,并通过derive(Debug, PartialEq)
为其自动实现了Debug
和PartialEq
trait,PartialEq
trait 用于比较两个Point
实例是否相等,避免手动逐个字段比较。 arrays_are_equal
函数接受两个Point
数组的引用,先比较长度,若长度不同则直接返回false
,提高效率。然后使用iter
方法创建迭代器,通过zip
方法将两个迭代器的元素一一配对,最后使用all
方法判断所有配对的Point
实例是否都相等。由于使用的是引用,避免了不必要的内存拷贝。