Ответ 1
Это оператор инклюзивного диапазона.
Диапазон 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
диапазона... start..end
как образец - экспериментальная особенность.)
история
Инклюзивные диапазоны были экспериментальной функцией только для ночи, и были написаны ...
раньше.
Начиная с Rust 1.26, это официально часть языка и написано ..=
.
(До того как существовали инклюзивные диапазоны, вы, на самом деле, не могли создать, скажем, диапазон байтовых значений, включая 255u8
. Потому что это было бы 0..256
, а 256
выходит за u8
диапазона u8
! Это проблема # 23635.)
Смотрите также
- В блоге Rust 1.26 опубликовано введение в
..=
. - fooobar.com/info/13642832/...