我经常发现自己想要在某个 struct 或元组的属性上有一个迭代器,所以我想知道如何正确地做到这一点.

我目前有两个类型为$[(usize, &str)]的切片,我想判断它们各自的索引(usize)是否相等, 使得切片的每一次迭代中都有tuple1.0 == tuple2.0.

我怎么能这样做呢?

推荐答案

迭代器有一个eq()方法,用于判断两个迭代器是否产生完全相同的项.如果两个切片中的"索引"相同,则可以使用此选项进行比较:

fn indices_match(a: &[(usize, &str)], b: &[(usize, &str)]) -> bool {
    a.iter().map(|&(i, _)| i).eq(b.iter().map(|&(i, _)| i))
}

这将隐式判断切片是否具有相同的长度.

Rust相关问答推荐

如何将元素添加到向量并返回对该元素的引用?

如何在Bevy/Rapier3D中获得碰撞机的计算质量?

原始数组数据类型的默认trait实现

交换引用时的生命周期

函数内模块的父作用域的访问类型

什么时候和为什么S最好是按值或引用传递简单类型

Trait bound i8:来自u8的不满意

rust中的库插件管理器,现在是否可行?

如何在 `connect_activate()` 之外创建一个 `glib::MainContext::channel()` 并将其传入?

为什么某些类型参数仅在特征边界中使用的代码在没有 PhantomData 的情况下进行编译?

Button.set_hexpand(false) 不会阻止按钮展开

我可以在 Rust 中 serde struct camel_case 和 deserde PascalCase

Rust 中的 Option as_ref 和 as_deref 有什么不同

第 7.4 章片段中如何定义 `thread_rng`

如何使用 rust bindgen 生成的 std_vector

当我在 struct 中存储异步函数时,为什么它需要生命周期

字符串切片的向量超出范围但原始字符串仍然存在,为什么判断器说有错误?

如何为枚举中的单个或多个值返回迭代器

如何阅读 HttpRequest 主体

为移动和借位的所有组合实现 Add、Sub、Mul、Div