如何检查事物是否在矢量中?
let n= vec!["-i","mmmm"];
if "-i" in n {
println!("yes");
} else {
println!("no");
我猜测我需要将其放入循环中,然后执行if "-i" in x
,其中x
是迭代变量。但是我希望有一种方便的方法,或者我混淆了语法,并且有类似的方法可以做到这一点。
虽然您可以构造一个循环,但更简单的方法是在向量的迭代器上使用any
方法。
any
采取闭包返回true或false。依次为每个项目调用闭包,直到找到返回true的项目为止。请注意,迭代器返回对值的引用(因此any
中的&
)。
|&i|
由于let n= vec!["-i","mmmm"];
if n.iter().any(|&i| i=="-i") {
println!("Yes");
}
在迭代器上运行,因此可以与任何类型的容器一起使用。迭代器上有很多类似的方法,例如any
,all
等。请参见find
的标准库文档。
Iterators
上有Iterators
(contains
)方法。
示例:
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
方法