Skip to content

Implement Buffer.toSeq like WrappedArray but with length cut-off #18

Description

@denisrosset

The contract of Iterable[A] does not prescribe an order for the elements; thus methods take Seq[A] parameters to document this fact --- and not especially to prescribe fast linear/indexed access.

As debox.Buffer has its elements ordered, a toSeq array wrapper would be a great addition. Right now, collection.mutable.WrappedArray cannot be used because the underlying debox.Buffer.elems array could be longer than the buffer itself.

Thus I propose to create an ArrayView class implementing Seq, with private fields array, offset and length and a few methods overridden for speed: I'm thinking of head, tail, apply, foreach, iterator, drop, take. The implementation trait for the other methods would have to be carefully chosen from the Scala collections to use linear access.

I can try a proof of concept PR: any interest ?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions