Rust 有没有一种简单的方法来确定一个向量在锈迹中是否充满了无?

Rust 有没有一种简单的方法来确定一个向量在锈迹中是否充满了无?,rust,Rust,给定Rust中选项的向量,是否有一种简单的方法来检查向量是否填充了无 例如,我可以找到一种简单的方法来检查向量是否填充了Some(usize) 作为解决方法,我可以只计算None的数量,并将其与x.len()进行比较 fn main(){ 设x:Vec=Vec![None,None,Some(3)]; 如果x.iter().filter(|x |**x==None).count()==x.len(){ println!(“向量中填充了None!”); }否则{ println!(“向量中没有填充

给定Rust中
选项的
向量
,是否有一种简单的方法来检查
向量
是否填充了

例如,我可以找到一种简单的方法来检查
向量
是否填充了
Some(usize)

作为解决方法,我可以只计算
None
的数量,并将其与
x.len()
进行比较

fn main(){
设x:Vec=Vec![None,None,Some(3)];
如果x.iter().filter(|x |**x==None).count()==x.len(){
println!(“向量中填充了None!”);
}否则{
println!(“向量中没有填充None!”);
}
}

而且。。。看起来太复杂了。有没有办法修复该错误,使代码按预期工作?如果没有,在Rust中有更简洁或更简单的方法吗?

您可以使用
all

fn main() {
    let x: Vec<Option<usize>> = vec![None, None, Some(3)];
    if x.iter().all(|x| x.is_none()) {
        println!("The Vector is filled with None!");
    } else {
        println!("The Vector is not filled with None!");
    }
}

请注意,
contains
告诉您向量是否包含一个元素等于其参数。这与检查所有元素是否等于其参数非常不同。
fn main() {
    let x: Vec<Option<usize>> = vec![None, None, Some(3)];
    if x.contains(&Some(usize)){
        println!("The Vector is not filled with None!");
    }else {
        println!("The Vector is filled with None!");
    }
} 
   Compiling playground v0.0.1 (/playground)
error[E0423]: expected value, found builtin type `usize`
 --> src/main.rs:3:25
  |
3 |     if x.contains(&Some(usize)){
  |                         ^^^^^ not a value
fn main() {
    let x: Vec<Option<usize>> = vec![None, None, Some(3)];
    if x.iter().filter(|x| **x==None).count() == x.len(){
        println!("The Vector is filled with None!");
    }else {
        println!("The Vector is not filled with None!");
    }
}
fn main() {
    let x: Vec<Option<usize>> = vec![None, None, Some(3)];
    if x.iter().all(|x| x.is_none()) {
        println!("The Vector is filled with None!");
    } else {
        println!("The Vector is not filled with None!");
    }
}
fn main() {
    let x: Vec<Option<usize>> = vec![None, None, Some(3)];
    if x.iter().flatten().next().is_none() {
        println!("The Vector is filled with None!");
    } else {
        println!("The Vector is not filled with None!");
    }
}