dtolnay/syn

RangeLimits variant naming

开放

#1,373 创建于 2023年2月6日

 (0 条评论) (0 个反应) (0 位负责人)Rust (373 个派生)github user discovery
help wanted

仓库指标

星标
 (3,409 个星标)
PR 合并指标
 (30 天内没有已合并 PR)

描述

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.

贡献者指南