dup -> IO::Buffer::SliceRuby 4.1 から[permalink][rdoc][edit]clone -> IO::Buffer::Slice-
スライスのビューをコピーして返します。
バイトはコピーしません。複製は元と同じ参照元・位置・大きさを持ちます。複製に対する IO::Buffer#advance や IO::Buffer::Slice#resize は、元のスライスのビューに影響しません。どちらから書き込んでも、同じメモリに書かれます。
凍結済みのスライスに対しては、
dupの結果は凍結されず、cloneの結果は凍結されます。buf = IO::Buffer.for("abcdef").dup slice = buf.slice(1, 3) # 複製の advance は、元のスライスのビューに影響しない copy = slice.dup copy.advance(1) p copy.get_string # => "cd" p slice.get_string # => "bcd" # どちらから書き込んでも、同じメモリに書かれる other = slice.dup other.set_string("XY") p buf.get_string # => "aXYdef"[SEE_ALSO] IO::Buffer::Storage#dup