gpt4 book ai didi

rust - 在 rust 中比较 Vec 和 Range

转载 作者:行者123 更新时间:2023-11-29 07:52:50 32 4
gpt4 key购买 nike

我想检查 Vec 是否等于 [0, 1, 2, ...]。我尝试了各种变体:

vec == &(0..vec.len())

但它们似乎都不起作用。我是否只需要手写一个循环?

最佳答案

您可以使用迭代器来比较 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");
}

让我们剖析重要的部分:

v.iter().cloned().eq(0..v.len())
  • v.iter()在对向量中元素的引用上创建一个迭代器 ( Iterator<Item = &{integer}> )。
  • .cloned() 克隆迭代器中的每个元素以从引用到拥有的值。这是必需的,因为我们无法比较 &{integer}{integer} .幸运的是,克隆一个简单的整数基本上是免费的。所以现在我们有 Iterator<Item = {integer}> .
  • .eq is a method of Iterator 它将迭代器与另一个迭代器进行比较。
  • 0..v.len()是从 0(含)到 v.len() 的范围(独家的)。 Such a range implements Iterator .

关于rust - 在 rust 中比较 Vec 和 Range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51378447/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com