"isDroppable" range trait for slicing to end

monarch_dodra monarchdodra at gmail.com
Mon Oct 29 07:34:03 PDT 2012

On Monday, 29 October 2012 at 14:33:01 UTC, monarch_dodra wrote:
> [SNIP]


An extension to this proposal, is the function "extractSlice".
This function would *ONLY* require isDroppable. It would be
implemented as:

auto extractSlice(R)(R r, size_t i, size_t j)
      static if (hasSlicing)
          return r[i .. j];
          return r.drop(i).takeExactly(j - i);

What makes this notion interesting, is that it works both on
sliceable ranges AND infinite ranges, but does not pretend to
have back-assignement to the original range. This is very
interesting, because it would allow "hasSlicing" to turn down
infinite ranges, but we'd still have a way to extract a range out
of those infinite ranges.

Another added bonus would be that certain non-infinite ranges, in
particular immutable ranges, are considered not-sliceable,
because they can't be back-assignabe. extractSlice would allow us
to extract a slice out of those ranges, even if we can't assign
them back...

More information about the Digitalmars-d mailing list