Ruby 4.1 リファレンスマニュアル

instance method IO::Buffer#copy

copy(source, offset = 0, length = nil, source_offset = 0) -> IntegerRuby 3.1 から[permalink][rdoc][edit]

別の IO::Buffer の内容を自身へコピーします。コピーしたバイト数を返します。

String の内容を書き込む場合は IO::Buffer#set_string を使用してください。

[PARAM] source:
コピー元を IO::Buffer で指定します。
[PARAM] offset:
書き込みを開始する位置をバッファの先頭からのバイト数で指定します。
[PARAM] length:
コピーするバイト数を指定します。省略した場合は source 全体をコピーします。
[PARAM] source_offset:
source のどの位置から読み出すかをバイト数で指定します。
[EXCEPTION] ArgumentError:
offset と length の合計がバッファのバイト数を超える場合に発生します。
[EXCEPTION] IO::Buffer::AccessError:
書き込みできないバッファに対して呼び出した場合に発生します。
buf = IO::Buffer.new(8)

p buf.copy(IO::Buffer.for("test"), 2) # => 4
p buf.get_string                      # => "\x00\x00test\x00\x00"

# 長さを指定して先頭 3 バイトだけコピーする
other = IO::Buffer.new(8)
p other.copy(IO::Buffer.for("abcdef"), 0, 3) # => 3
p other.get_string(0, 3)                     # => "abc"

[SEE_ALSO] IO::Buffer#set_string, IO::Buffer#slice