syntax - ¿Qué es el operador..=(punto punto igual) en Rust?
operators (1)
Este es el operador de rango inclusivo .
El rango x..=y
contiene todos los valores >= x
y <= y
, es decir, "desde x
hasta e incluyendo y
".
Esto contrasta con el operador de rango no inclusivo x..y
, que no incluye a sí mismo.
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]
Expresiones de coincidencia
También puede usar start..=end
como un patrón en una expresión de coincidencia para hacer coincidir cualquier valor en el rango (inclusive).
match fahrenheit_temperature {
70..=89 => println!("What lovely weather!"),
_ => println!("Ugh, I''m staying in."),
}
El uso de un start..end
exclusivo de rango ... start..end
como patrón es una característica experimental. Ver el número 37854 .
Historia
Los rangos inclusivos solían ser una característica experimental de solo noche, y se escribieron ...
antes.
A partir de Rust 1.26, es oficialmente parte del lenguaje y está escrito ..=
.
(Antes de que existieran los rangos inclusivos, en realidad no se podía crear, digamos, un rango de valores de bytes que incluyan 255u8
. Debido a que sería 0..256
, ¡y 256
está fuera del rango u8
! Este es el problema # 23635 ).
Ver también
- La publicación del blog de Rust 1.26 presenta la introducción a
..=
. - StackOverflow: ¿Cómo incluyo el valor final en un rango?
Vi este operador ..=
en algún código Rust:
for s in 2..=9 {
// some code here
}
¿Qué es?