range doesn't return a forward iterator. Range<A> also implements
DoubleEndedIterator.

On Thu, Apr 10, 2014 at 12:53 AM, Kevin Ballard <ke...@sb.org> wrote:
> On Apr 9, 2014, at 9:50 PM, Tommi Tissari <rusty.ga...@icloud.com> wrote:
>
>>> On 10 Apr 2014, at 00:22, Kevin Ballard <ke...@sb.org> wrote:
>>>
>>> FWIW, my point about range is it relies on One being the number 1, rather 
>>> than being the multiplicative identity. AFAIK there's nothing special about 
>>> 1 in a ring outside of its status as a multiplicative identity. Certainly 
>>> it's not considered some special value for addition.
>>
>> Another problem with std::iter::range is that it requires too much from its 
>> argument type A by saying A must implement Add<A, A> while it only returns a 
>> forward iterator.
>>
>> Perhaps, in order to make a more sensible implementation of iter::range, a 
>> new concept, a trait, is needed to be able to specify that a certain type T 
>> implements a method 'increment' that modifies a variable of type T from 
>> value x to value y such that:
>> 1) x < y
>> 2) there is no valid value z of type T satisfying  x < z < y
>>
>> For integral types there would an implementation of this trait in stdlib 
>> with 'increment' doing x += 1;
>>
>> Then, a natural extension to this trait would be a trait that has a method 
>> 'advance(n: uint)' that would, at constant time, conceptually call the 
>> 'increment' method n times.
>>
>> Then there would also be a 'decrement' method for going the other direction.
>>
>> There probably needs to be some other use cases for this new trait to carry 
>> its weight though.
>
> This trait would disallow range(0f32, 10f32) because there are quite a lot of 
> valid values z of type f32 satisfying 0f32 < z < 1f32.
>
> -Kevin
> _______________________________________________
> Rust-dev mailing list
> Rust-dev@mozilla.org
> https://mail.mozilla.org/listinfo/rust-dev



-- 
http://octayn.net/
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to