`...` vs `..=` for inclusive ranges

#103

``````for 5 < i <= 10
for 5<= i < 10

or the other way around

for 10 > i >= 0
for 10 >= i > 0
``````

and so on?

#104

I like this but itās ambiguous outside a for loop. How would you declare a range?

``````let range = 5 < i <= 10; // what is i for?
for item in range { ... }
for item in (10 > i > 0) { ... } // what is i?
``````

perhaps

``````for item in (10 > _ > 0) { ... }
``````

would do?

#105

Well I like the idea for ranges

``````let range2 = 10  > .. >= 6
``````

so

``````let range1 = 5 <= .. < 16
``````

is desugar for

``````let range1 = 5..16
``````

but I still think that this separation in for is nice

``````for 10 > idx > 0 { ... }
``````

is clear as water, even

``````for idx in 10 > .. > 0 { ...}
``````

than instead (which doesnt work right now)

``````for idx in 9..-1 {
}
``````

you need to write some like

``````let r1 = 1..10;
for idx in r1.rev() {
println!("{:?}", idx);
}
``````

#106

Itād work in C++ (overload `operator <=(FullRange, T)` to return `RangeToInclusive<T>`), but `PartialOrd` says `<=` can only return bool, via `partial_cmp` returning `Option<Ordering>`, so I assume it canāt work in Rust. (And PartialOrd requires PartialEq, so itād also allow silliness like `4 == .. == 2`.) I assume itād be completely doable as a macro, though. Then you could even make `range!(0 <= r)` turn `RangeTo(5)` into `Range(0, 5)`.

Let me also plug the comment I posted on the other thread about ranges. TL/DR: From an algorithmic perspective, I think all `std` should provide is the Range [a,b) where b is āreachableā from a by zero-or-more-but-finite applications of a successor function (aka, roughly, a ā¤ b). Going beyond that feels like weāre making an interval library, which is a totally different thing, and the current range is no better than a pair.