我如何检查事物是否在向量中

问题描述 投票:1回答:2

如何检查事物是否在矢量中?

let n= vec!["-i","mmmm"];
if "-i" in n { 
    println!("yes");
} else {
    println!("no");

我猜测我需要将其放入循环中,然后执行if "-i" in x,其中x是迭代变量。但是我希望有一种方便的方法,或者我混淆了语法,并且有类似的方法可以做到这一点。

rust
2个回答
1
投票

虽然您可以构造一个循环,但更简单的方法是在向量​​的迭代器上使用any方法。

any采取闭包返回true或false。依次为每个项目调用闭包,直到找到返回true的项目为止。请注意,迭代器返回对值的引用(因此any中的&)。

|&i|

由于let n= vec!["-i","mmmm"]; if n.iter().any(|&i| i=="-i") { println!("Yes"); } 在迭代器上运行,因此可以与任何类型的容器一起使用。迭代器上有很多类似的方法,例如anyall等。请参见find的标准库文档。


0
投票

Iterators上有Iteratorscontains)方法。

示例:

https://doc.rust-lang.org/std/vec/struct.Vec.html#method.contains

[在某种程度上是Vec,例如,如果let n = vec!["-i","mmmm"]; if n.contains(&"-i") { println!("yes"); } else { println!("no"); } 的类型为restrictive,则不允许检查Vec<String>是否包含x。在这种情况下,您将必须使用@harmic

中描述的x方法
© www.soinside.com 2019 - 2024. All rights reserved.