Rust 有没有一种简单的方法来确定一个向量在锈迹中是否充满了无?
给定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!(“向量中没有填充
选项的向量
,是否有一种简单的方法来检查向量
是否填充了无
例如,我可以找到一种简单的方法来检查向量
是否填充了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!");
}
}