我想检查一下是否Vec等于[0, 1, 2, ...].我尝试了各种变体:
vec == &(0..vec.len())
Run Code Online (Sandbox Code Playgroud)
但它们似乎都不起作用.我只需要长手写一个循环吗?
您可以使用迭代器将Vec<T>(或更一般地说,切片[T])与范围(Playground)进行比较:
let v = vec![0, 1, 2, 3, 4];
if v.iter().cloned().eq(0..v.len()) {
println!("v contains 0..5");
} else {
println!("v doesn't contain 0..5");
}
Run Code Online (Sandbox Code Playgroud)
让我们剖析一下重要的部分:
v.iter().cloned().eq(0..v.len())
Run Code Online (Sandbox Code Playgroud)
v.iter()通过对vector(Iterator<Item = &{integer}>)中元素的引用创建一个迭代器..cloned()克隆迭代器中的每个元素,从引用转到拥有值.这是因为我们不能要求比&{integer}对{integer}.幸运的是,克隆一个简单的整数基本上是免费的.所以现在我们有了Iterator<Item = {integer}>..eq是一种Iterator将迭代器与另一个迭代器进行比较的方法.0..v.len()是0(含)到v.len()(不包括)的范围.这样的范围实现Iterator.| 归档时间: |
|
| 查看次数: |
308 次 |
| 最近记录: |