- Learning Rust
- Paul Johnson Vesa Kaihlavirta
- 245字
- 2021-07-02 23:07:24
Using enumerate
A loop condition can also be more complex, using multiple conditions and variables. For example, the for loop can be tracked using enumerate. This will keep track of how many times the loop has executed, as shown here:
for(i, j) in (10..20).enumerate() { println!("loop has executed {} times. j = {}", i, j); }
The following is the output:

Say we have an array that we need to iterate over to obtain the values. Here, the enumerate method can be used to obtain the value of the array members. The value returned in the condition will be a reference, so a code such as the one shown in the following example will fail to execute (line is a & reference whereas an i32 is expected):
// 04/enumerate/src/main.rs
fn main() { let my_array: [i32; 7] = [1i32,3,5,7,9,11,13]; let mut value = 0i32; for(_, line) in my_array.iter().enumerate() { value += line; } println!("{}", value); }
This can be simply converted back from the reference value, as follows:
for(_, line) in my_array.iter().enumerate() { value += *line; }
The iter().enumerate() method can equally be used with the Vec type (or any other type that implements the iterator trait), as shown in the following code:
// 04/arrayloop/src/main.rs
fn main() { let my_array = vec![1i32,3,5,7,9,11,13]; let mut value = 0i32; for(_,line) in my_array.iter().enumerate() { value += *line; } println!("{}", value); }
In both cases, the value given at the end will be 49, as shown in the following screenshot:

- 多媒體CAI課件設計與制作導論(第二版)
- 數據庫程序員面試筆試真題與解析
- 樂學Web編程:網站制作不神秘
- Internet of Things with Intel Galileo
- Unity 5.x By Example
- 高級語言程序設計(C語言版):基于計算思維能力培養
- 程序設計基礎教程:C語言
- C++程序設計教程(第2版)
- Web Developer's Reference Guide
- IBM Cognos TM1 Developer's Certification guide
- 精益軟件開發管理之道
- JavaScript Mobile Application Development
- Effective Python:編寫高質量Python代碼的90個有效方法(原書第2版)
- 交互設計語言:與萬物對話的藝術(全兩冊)
- 看漫畫學Python:有趣、有料、好玩、好用(全彩版)