官术网_书友最值得收藏!

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:

主站蜘蛛池模板: 托克托县| 肇庆市| 浙江省| 扬中市| 洛阳市| 道孚县| 沾化县| 红原县| 临海市| 松溪县| 买车| 合作市| 拜泉县| 永靖县| 荔浦县| 扎鲁特旗| 双峰县| 灯塔市| 鱼台县| 墨玉县| 光泽县| 资兴市| 新疆| 广西| 山阳县| 黎川县| 龙海市| 元谋县| 侯马市| 昌都县| 忻城县| 福建省| 化州市| 长寿区| 定兴县| 民勤县| 宜丰县| 民县| 绵阳市| 卢氏县| 文化|