代码之家  ›  专栏  ›  技术社区  ›  Steampunkery

退出代码101使用数组对数组进行迭代(&A)

  •  4
  • Steampunkery  · 技术社区  · 6 年前

    &[i32; 1000000] is not an iterator; maybe try calling .iter() or a similar method 我知道我可以用 iter() iter() &array .

    extern crate time;
    
    fn main() {
        let array: [i32; 1000000] = [0; 1000000]; // This will produce an error
        // let array: [i32; 32] = [0; 32] produces no error
    
        let start_time = time::precise_time_s();
        for _x in &array {
        }
        println!("{}", time::precise_time_s() - start_time);
    }
    

    &数组 ?

    1 回复  |  直到 6 年前
        1
  •  6
  •   DK.    6 年前

    在性能方面,没有区别,因为他们使用完全相同的 Iterator 实施。您可以通过查看 implementations of IntoIterator ;特别是在 IntoIter 类型。

    你不能使用 &array 对于某些大小,是因为Rust没有泛型的泛型值参数。这意味着标准库无法表示参数化了某个值的泛型。比如说,数组长度。这意味着您需要一个 输入迭代器 对于 . 这显然是不可能的,因此标准库只对一些大小实现它;特别是对于大小最多为32个元素的数组。