[ruby-core:109643] [Ruby master Feature#13626] Add String#byteslice!
From:
"Eregon (Benoit Daloze)" <noreply@...>
Date:
2022-08-23 13:48:39 UTC
List:
ruby-core #109643
Issue #13626 has been updated by Eregon (Benoit Daloze). Why not simply `String#slice!` if the string encoding is BINARY? ```ruby result = @read_buffer.slice!(size) # @read_buffer must be in the BINARY encoding ``` For IO buffers, I think it's reasonable to ensure every string appended is BINARY, so the `<<` gotcha is just a small inconvenience. And if it's not BINARY (or fixed-width encoding), how do you ensure you are not cutting e.g. in the middle of a UTF-8 character? ---------------------------------------- Feature #13626: Add String#byteslice! https://bugs.ruby-lang.org/issues/13626#change-98867 * Author: ioquatix (Samuel Williams) * Status: Open * Priority: Normal ---------------------------------------- It's a common pattern in IO buffering, to read a part of a string while leaving the remainder. ~~~ # Consume only part of the read buffer: result = @read_buffer.byteslice(0, size) @read_buffer = @read_buffer.byteslice(size, @read_buffer.bytesize) ~~~ It would be nice if this code could be simplified to: ~~~ result = @read_buffer.byteslice!(size) ~~~ Additionally, this allows a significantly improved implementation by the interpreter. -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>