Range expressions
Syntax
RangeExpression :
RangeExpr
| RangeFromExpr
| RangeToExpr
| RangeFullExpr
| RangeInclusiveExpr
| RangeToInclusiveExprRangeExpr :
Expression..ExpressionRangeFromExpr :
Expression..RangeToExpr :
..ExpressionRangeFullExpr :
..RangeInclusiveExpr :
Expression..=ExpressionRangeToInclusiveExpr :
..=Expression
The .. and ..= operators will construct an object of one of the std::ops::Range (or core::ops::Range) variants, according to the following table:
| Production | Syntax | Type | Range |
|---|---|---|---|
| RangeExpr | start..end |
std::ops::Range | start ≤ x < end |
| RangeFromExpr | start..
|
std::ops::RangeFrom | start ≤ x |
| RangeToExpr |
..end |
std::ops::RangeTo | x < end |
| RangeFullExpr | .. |
std::ops::RangeFull | - |
| RangeInclusiveExpr | start..=end |
std::ops::RangeInclusive | start ≤ x ≤ end |
| RangeToInclusiveExpr |
..=end |
std::ops::RangeToInclusive | x ≤ end |
Examples:
#![allow(unused)]
fn main() {
1..2; // std::ops::Range
3..; // std::ops::RangeFrom
..4; // std::ops::RangeTo
..; // std::ops::RangeFull
5..=6; // std::ops::RangeInclusive
..=7; // std::ops::RangeToInclusive
}
The following expressions are equivalent.
#![allow(unused)]
fn main() {
let x = std::ops::Range {start: 0, end: 10};
let y = 0..10;
assert_eq!(x, y);
}
Ranges can be used in for loops:
#![allow(unused)]
fn main() {
for i in 1..11 {
println!("{}", i);
}
}
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/reference/expressions/range-expr.html