Problem
I can foresee circumstances where it would be very helpful to be able to copy blocks of Memory bytes within and between Memory instances. Since Memory buffers are read/write, you can construct such block copy methods yourself by assigning values one byte at a time, but I would expect they could be made much faster as native functions for multiple byte copies.
Proposed Solution
sourceMemory.Copy(destinationMemory,sourceStart As Integer, Length as Integer,destinationStart)
... where destinationMemory is the same or another Memory. When copying within a Memory you would have to make sure that the destination won't overlap the source, and in all cases you would have to make sure that the described destination can receive Length bytes from the destination starting position.
Example Workflow
Alternatives Considered
We're already close to this with Copy() and Slice() but there's currently no way (that I can see) to construct a target Memory from multiple slices of a source Memory, apart from laborious byte by byte copying.
Who Would This Help?
Say you want to copy a fixed width binary file to a destination that drops certain "fields" -- you would probably represent the records for the original and copy as Memory instances, with the destination buffer constructed from slices of the source buffer.
Creating a fixed length array of binary values of some fixed width type where you want to trim or expand capacity or just copy subsets of values. Perhaps someone needs a large matrix of Int32s or Int16s and doesn't want to consume the memory required to represent them as native Integer (Int64) arrays.
Create something like a BitArray type (although this would probably also benefit from native bit shifting support)
Or simply to implement Array semantics for bytes.