Is this range behaviour correct?
monarch_dodra
monarchdodra at gmail.com
Thu Mar 14 06:58:49 PDT 2013
On Thursday, 14 March 2013 at 13:20:51 UTC, Andrea Fontana wrote:
> On Thursday, 14 March 2013 at 12:29:26 UTC, Andrei Alexandrescu
> wrote:
>> On 3/14/13 6:45 AM, Andrea Fontana wrote:
>>> On Thursday, 14 March 2013 at 10:08:53 UTC, Andrea Fontana
>>> wrote:
>>>> I'm trying to implement a db cursor as simple InputRange. I
>>>> can't
>>>> implement as forward range because using c-api I can't
>>>> clone/save cursor.
>> Add .save() to it.
>>
>> Andrei
>
> I can't add save and create a forward range: c-api doesn't
> allow me to clone db cursor.
But think about it. You say you can't save, but you want pass by
value to preserve state. If you can preserve state, doesn't that
mean you just saved?
Once you've passed your "can't preserve state" to a foreach, then
your range is consumed. So yes, it is correct behavior.
Most input ranges should model reference semantics when
passed/copied by value. If somebody modifies the range, all
ranges are affected. The tough part is usually preserving correct
state.
More information about the Digitalmars-d-learn
mailing list