r[expr.range]
Range expressions
r[expr.range.syntax]
RangeExpression ->
RangeExpr
| RangeFromExpr
| RangeToExpr
| RangeFullExpr
| RangeInclusiveExpr
| RangeToInclusiveExpr
RangeExpr -> Expression `..` Expression
RangeFromExpr -> Expression `..`
RangeToExpr -> `..` Expression
RangeFullExpr -> `..`
RangeInclusiveExpr -> Expression `..=` Expression
RangeToInclusiveExpr -> `..=` Expression
r[expr.range.behavior]
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:
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
r[expr.range.equivalence] The following expressions are equivalent.
let x = Range ;
let y = 0..10;
assert_eq!;
r[expr.range.for]
Ranges can be used in for loops:
for i in 1..11