Support CodeUnits as valid input for CSV.File/CSV.Rows #905
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #894. I believe this used to work because we made a copy of the
input
CodeUnits
object, which is fine, because we got aVector{UInt8}
out of it, but not ideal since we made a copy. Aftersome research, I found that when you call
IOBuffer(str)
, it uses thisnifty little trick of calling
unsafe_wrap(Vector{UInt8}, str)
which isthen passed to
IOBuffer
as a way to convert a string to aVector{UInt8}
without copying. We can utilize the same trick toefficiently treat a string as a
Vector{UInt8}
while the Juliainternals takes care of tracking the true owner of the data as the
original string for us (thus avoiding any GC issues if we were to
naively call
unsafe_wrap(Array, pointer(str))
ourselves).