pub fn try_reuse_buffer<B: GrowBufferMut + ShrinkBuffer>(
buffer: B,
prefix: usize,
suffix: usize,
max_copy_bytes: usize,
) -> Result<B, B>Expand description
Attempts to reuse a buffer for the purposes of implementing
BufferProvider::reuse_or_realloc.
try_reuse_buffer attempts to reuse an existing buffer to satisfy the given
prefix and suffix constraints. If it succeeds, it returns Ok containing a
buffer with the same body as the input, and with at least prefix prefix
bytes and at least suffix suffix bytes. Otherwise, it returns Err
containing the original, unmodified input buffer.
Concretely, try_reuse_buffer has the following behavior:
- If the prefix and suffix constraints are already met, it returns
Okwith the input unmodified - If the prefix and suffix constraints are not yet met, then…
- If there is enough capacity to meet the constraints and the body is not
larger than
max_copy_bytes, the body will be moved within the buffer in order to meet the constraints, and it will be returned - Otherwise, if there is not enough capacity or the body is larger than
max_copy_bytes, it returnsErrwith the input unmodified
- If there is enough capacity to meet the constraints and the body is not
larger than
max_copy_bytes is meant to be an estimate of how many bytes can be copied
before allocating a new buffer will be cheaper than copying.