区间表达式
语法
区间表达式 :
区间式
| 区间From表达式
| 区间To表达式
| 区间Full表达式
| 区间包含表达式
| 区间To包含表达式区间From表达式 :
表达式..
区间To表达式 :
..
表达式区间Full表达式 :
..
区间To包含表达式 :
..=
表达式
..
和 ..=
运算符会根据下面的表格构造出一个 std::ops::Range
(或 core::ops::Range
) 的变体:
产生式 | 语法 | 类型 | 区间 |
---|---|---|---|
区间式 | 头.. 尾 | std::ops::Range | 头 ≤ x < 尾 |
区间From表达式 | 头.. | std::ops::RangeFrom | 头 ≤ x |
区间To表达式 | .. 尾 | std::ops::RangeTo | x < 尾 |
区间Full表达式 | .. | std::ops::RangeFull | - |
区间包含表达式 | 头..= 尾 | std::ops::RangeInclusive | 头 ≤ x ≤ 尾 |
区间To包含表达式 | ..= 尾 | std::ops::RangeToInclusive | x ≤ 尾 |
示例:
#![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 }
以下表达式是等价的。
#![allow(unused)] fn main() { let x = std::ops::Range {start: 0, end: 10}; let y = 0..10; assert_eq!(x, y); }
区间可以在 for
循环中使用:
#![allow(unused)] fn main() { for i in 1..11 { println!("{}", i); } }