- 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:

- JSP網絡編程(學習筆記)
- Learning Cython Programming(Second Edition)
- CMDB分步構建指南
- x86匯編語言:從實模式到保護模式(第2版)
- Object-Oriented JavaScript(Second Edition)
- Web全棧工程師的自我修養
- Visual Basic程序設計習題解答與上機指導
- Canvas Cookbook
- Visual Basic程序設計習題與上機實踐
- Hands-On Kubernetes on Windows
- Learning Kotlin by building Android Applications
- Spring Boot從入門到實戰
- Head First Kotlin程序設計
- 川哥教你Spring Boot 2實戰
- Practical Linux Security Cookbook