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.

貢獻者指南