len()和count()之间有什么区别?

时间:2015-04-07 20:25:53

标签: rust

在下面的代码中,无论使用len还是count,我都会得到相同的结果:

fn main() {
    let vector = [0, 1, 2];
    assert_eq!(vector.iter().count(), vector.iter().len());
}

len似乎更通用,因为我也可以这样做:

assert_eq!(vector.len(), 3);

那么,两者之间的区别是什么?为什么要使用一个而不是另一个?

1 个答案:

答案 0 :(得分:7)

vector.len()

  

返回向量中的元素数。

iter.len()

  

返回迭代器的确切长度。

iter.count()

  

计算此迭代器中的元素数。

因此,当它们返回相同的值时,count实际上会计算元素。请注意,len仅适用于ExactSizeIterator;因此,如果该值是惰性检索的,则总长度可能不可用,您需要明确计算它。