Что означает, что цикл имеет целую жизнь? - PullRequest
0 голосов
/ 23 мая 2018

Я смотрел на некоторый код Rust и увидел что-то вроде этого:

'running: loop {
    // insert code here
    if(/* some condition */) {
        break 'running;
    }
}

Что значит «пометить» цикл с временем жизни?Каковы преимущества и различия между просто делать:

loop {
    // insert code here
    if(/* some condition */) {
        break;
    }
}

1 Ответ

0 голосов
/ 23 мая 2018

Метки циклов

Вы также можете столкнуться с ситуациями, когда у вас есть вложенные циклы, и вам необходимо указать, для чего предназначен ваш оператор break или continue.Как и большинство других языков, разрыв или продолжение Rust применяется к самому внутреннему циклу.В ситуации, когда вы хотите разорвать или продолжить один из внешних циклов, вы можете использовать метки, чтобы указать, к какому циклу применяется оператор разрыва или продолжения.

В следующем примере мы переходим к следующемуитерация внешнего цикла, когда х четный, в то время как мы продолжаем следующую итерацию внутреннего цикла, когда у четный.Так что он выполнит println!когда x и y нечетны.

'outer: for x in 0..10 {
    'inner: for y in 0..10 {
        if x % 2 == 0 { continue 'outer; } // Continues the loop over `x`.
        if y % 2 == 0 { continue 'inner; } // Continues the loop over `y`.
        println!("x: {}, y: {}", x, y);
    }
}
...