]> git.proxmox.com Git - rustc.git/blobdiff - src/doc/reference/src/expressions/range-expr.md
New upstream version 1.23.0+dfsg1
[rustc.git] / src / doc / reference / src / expressions / range-expr.md
index 282f3adae753c814ae8028ec3a647086f99c1eaf..00db2d989e79b6b1e9963a91cc8ba3f58f7ec6a9 100644 (file)
@@ -1,7 +1,35 @@
 # Range expressions
 
+> **<sup>Syntax</sup>**  
+> _RangeExpression_ :  
+> &nbsp;&nbsp; &nbsp;&nbsp; _RangeExpr_  
+> &nbsp;&nbsp; | _RangeFromExpr_  
+> &nbsp;&nbsp; | _RangeToExpr_  
+> &nbsp;&nbsp; | _RangeFullExpr_  
+>  
+> _RangeExpr_ :  
+> &nbsp;&nbsp; [_Expression_] `..` [_Expression_]  
+>  
+> _RangeFromExpr_ :  
+> &nbsp;&nbsp; [_Expression_] `..`  
+>  
+> _RangeToExpr_ :  
+> &nbsp;&nbsp; `..` [_Expression_]  
+>  
+> _RangeFullExpr_ :  
+> &nbsp;&nbsp; `..`  
+
 The `..` operator will construct an object of one of the `std::ops::Range` (or
-`core::ops::Range`) variants.
+`core::ops::Range`) variants, according to the following table:
+
+| Production             | Syntax        | Type                         | Range                 |
+|------------------------|---------------|------------------------------|-----------------------|
+| _RangeExpr_            | start`..`end  | [std::ops::Range]            | start &le; x &lt; end |
+| _RangeFromExpr_        | start`..`     | [std::ops::RangeFrom]        | start &le; x          |
+| _RangeToExpr_          | `..`end       | [std::ops::RangeTo]          |            x &lt; end |
+| _RangeFullExpr_        | `..`          | [std::ops::RangeFull]        |            -          |
+
+Examples:
 
 ```rust
 1..2;   // std::ops::Range
@@ -18,3 +46,18 @@ let y = 0..10;
 
 assert_eq!(x, y);
 ```
+
+Ranges can be used in `for` loops:
+
+```rust
+for i in 1..11 {
+    println!("{}", i);
+}
+```
+
+[_Expression_]: expressions.html
+
+[std::ops::Range]:     https://doc.rust-lang.org/std/ops/struct.Range.html
+[std::ops::RangeFrom]: https://doc.rust-lang.org/std/ops/struct.RangeFrom.html
+[std::ops::RangeTo]:   https://doc.rust-lang.org/std/ops/struct.RangeTo.html
+[std::ops::RangeFull]: https://doc.rust-lang.org/std/ops/struct.RangeFull.html