dtolnay/syn

RangeLimits variant naming

Aberta

#1.373 aberto em 6 de fev. de 2023

 (0 comentário) (0 reação) (0 responsável)Rust (373 forks)github user discovery
help wanted

Métricas do repositório

Stars
 (3.409 estrelas)
Métricas de merge de PR
 (Nenhuma PRs mesclada em 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.

Guia do colaborador