Instance Methodswift 6.0.3Swift

extracting(_:)

Constructs a standalone buffer pointer over the items within the supplied range of positions in the memory region addressed by this buffer pointer.

func extracting(_ bounds: Range<Int>) -> UnsafeMutableBufferPointer<Element>

Parameters

bounds

A valid range of indices within this buffer.

Returns

A new buffer pointer over the items at bounds.

The returned buffer’s first item is always at index 0; unlike buffer slices, extracted buffers do not generally share their indices with the original buffer pointer.

withUnsafeTemporaryAllocation(of: Int.self, capacity: 5) { buffer in
  buffer.initialize(repeating: 0)
  // buffer contains [0, 0, 0, 0, 0]
  let part = buffer.extracting(2 ..< 4)
  part[0] = 1
  part[1] = 2
  // buffer now contains [0, 0, 1, 2, 0]
}

When Element is copyable, the extracting operation is equivalent to slicing the buffer then rebasing the resulting buffer slice:

let a = buffer.extracting(i ..< j)
let b = UnsafeBufferPointer(rebasing: buffer[i ..< j])
// `a` and `b` are now holding the same buffer

However, unlike slicing, the extracting operation remains available even if Element happens to be noncopyable.