rust - 是否有等效于python中的`any`方法
问题描述
在 Python 的标准库中调用了一个非常方便的函数any
,它允许检查给定迭代中的任何项是否验证了某些条件。
my_list = [1, 3, 4, 5, 8]
# using any
four_is_present = any(elem == 4 for elem in my_list)
# is equivalent to
four_is_present = False
for elem in my_list:
if elem == 4:
four_is_present = True
break
我想知道 Rust 中是否有等效的语法糖,或者我是否必须使用“更长”的表达式。
解决方案
是的。Iterator 上有Iterator::any
一个方法(与 Python 相比,它是一个接受 Iterator 的独立函数)。
您可以像任何其他方法一样调用它。
fn main() {
let my_list = vec![1, 3, 4, 5, 8];
println!("{}", my_list.iter().any(|&i| i == 4));
}
如果您仍然使用 aVec
或 a slice
,则可以使用contains
which 将在其 implementationany
中使用该方法。
fn main() {
let my_list = vec![1, 3, 4, 5, 8];
println!("{}", my_list.contains(&4));
}
API 文档还将列出其他有用的方法,例如all
、chain
、或。文档中还有这些方法的示例,都值得一读。zip
map
filter
推荐阅读
- testing - 如何使用赛普拉斯从控制台触发点击?
- python - subprocess.Popen 中一个奇怪的参数有问题,即 command_argsbasestring
- swiftui - ZStack - IOS 14 beta - Zstack 在键盘上飞
- c# - Xamarin Picker - 在选定索引处打开列表显示
- python - 实时操作音频缓冲区 - Python 3.7
- python - 如何使用多条曲线和因变量进行曲线拟合
- python-3.x - 来自 Boto3 的 list_stacks() 中带有 Moto 的 Pytest-cov
- asp.net - asp.net core 3.1 sqlite 找不到指定的模块
- vuex - Vue 组合 API 与 Vuex(各有优势并找到适合我们的)
- .net - 将 .NET float[] 转换为 MATLAB 矩阵