163. Streaming memory segments
Combining the Java Stream API with memory segments can be achieved via the elements(MemoryLayout elementLayout) method. This method gets an element layout and returns a Stream<MemorySegment>, which is a sequential stream over disjointed slices in this segment. The stream size matches the size of the specified layout.
Let’s consider the following memory layout:
SequenceLayout xy = MemoryLayout
  .sequenceLayout(2, MemoryLayout.structLayout(
    ValueLayout.JAVA_INT.withName("x"),
    ValueLayout.JAVA_INT.withName("y")));
    Next, we declare two VarHandle and set some data:
VarHandle xHandle = xy.varHandle(
  PathElement.sequenceElement(),
  PathElement.groupElement("x"));
VarHandle yHandle = xy.varHandle(
  PathElement.sequenceElement(), 
  PathElement.groupElement("y"));
try (Arena arena = Arena.ofShared()) {
  MemorySegment segment = arena.allocate(xy);
  xHandle.set(segment, 0, 5);...