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

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:

主站蜘蛛池模板: 鲁山县| 绥芬河市| 册亨县| 峨眉山市| 盱眙县| 镇赉县| 包头市| 社会| 二手房| 兴安盟| 扎兰屯市| 科技| 大荔县| 赤壁市| 南召县| 长春市| 泾源县| 久治县| 枞阳县| 新闻| 邵东县| 农安县| 洪雅县| 偃师市| 买车| 广昌县| 南部县| 大化| 区。| 车致| 固阳县| 西平县| 乐东| 响水县| 余干县| 大英县| 浮山县| 吉林市| 闸北区| 庐江县| 延寿县|