Preview Ruby 4.1 is a preview. It can change before the final release. Switch to Ruby 4.0 →
instance method
IO::Buffer::Storage#transfer
transfer → new_io_buffer
io_buffer.c
View on GitHub ↗
static VALUE
io_buffer_transfer(VALUE self)
{
rb_check_frozen(self);
return rb_io_buffer_transfer(self);
}
Transfers ownership of the underlying memory to a new buffer, causing the current buffer to become uninitialized.
Example
buffer = IO::Buffer.for('test') other = buffer.transfer other # => # #<IO::Buffer 0x00007f136a15f7b0+4 EXTERNAL READONLY SLICE> # 0x00000000 74 65 73 74 test buffer # => # #<IO::Buffer 0x0000000000000000+0 NULL EXTERNAL READONLY> buffer.null? # => true
A frozen buffer cannot transfer ownership, as that would leave it uninitialized:
Example
buffer = IO::Buffer.for('test').freeze buffer.transfer # in `transfer': can't modify frozen IO::Buffer (FrozenError)