Repository metrics
- Stars
- (3,326 stars)
- PR merge metrics
- (No merged PRs in 30d)
Description
Here is syn's current RangeLimits enum:
https://github.com/dtolnay/syn/blob/391c9c6d1667be37cd5ad4de5fa305ec62296bb8/src/expr.rs#L904-L909
Rustc has the exact same thing: https://github.com/rust-lang/rust/blob/1.67.0/compiler/rustc_ast/src/ast.rs#L1323-L1328
pub enum RangeLimits {
/// Inclusive at the beginning, exclusive at the end
HalfOpen,
/// Inclusive at the beginning and end
Closed,
}
However it's ambiguous whether "half open" means "exclusive of upper bound" vs "bounded only on one side".
The opposite approach is taken by the current Rust Reference: https://doc.rust-lang.org/1.67.0/reference/patterns.html#range-patterns
RangePattern :
InclusiveRangePattern | HalfOpenRangePattern
InclusiveRangePattern :
RangePatternBound `..=` RangePatternBound
HalfOpenRangePattern :
RangePatternBound `..` | `..=` RangePatternBound
Notice how it has a ..= pattern which it refers to as half open, even though ..= is never considered half open in syn or rustc.