Что такое оператор .. = (точка-точка-равно) в Rust? - PullRequest
0 голосов
/ 22 октября 2018

Я видел этот ..= оператор в некотором коде Rust:

for s in 2..=9 {
    // some code here
}

Что это?

1 Ответ

0 голосов
/ 22 октября 2018

Это оператор диапазона включительно .

Диапазон x..=y содержит все значения >= x и <= y, то есть «от xдо и , включая y ”.

Это в отличие от не включающего оператора диапазона x..y, который не включает y

fn main() {
    println!("{:?}", (10..20) .collect::<Vec<_>>());
    println!("{:?}", (10..=20).collect::<Vec<_>>());
}

// Output:
//
//     [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
//     [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

Соответствие выражений

Вы также можете использовать start..=end в качестве шаблона в выражении match для соответствия любому значению в (включительно) диапазоне.

match fahrenheit_temperature {
    70..=89  => println!("What lovely weather!"),
    _        => println!("Ugh, I'm staying in."),
}

(Использование исключительного диапазона start..end в качестве шаблона является экспериментальной функцией .)

История

Использованы включенные диапазоныбыть экспериментальной функцией, работающей только на ночь, и была написана ... ранее.

Начиная с Rust 1.26, она официально является частью языка и написана ..=.

(до включениядиапазоны существовали, вы фактически не могли создать, скажем, диапазон значений байтов, включая 255u8. Потому что это было бы 0..256, а 256 выходит за пределы диапазона u8! This is issue # 23635 .)

См. также

...