Fast CSV using Rust extensions. Can read arrays of arrays from strings and write strings from arrays of arrays.
This gem requires Rust (~> 1.17) and Cargo to be installed. With those requirements fulfilled, rscsv can be installed like any other gem:
gem install rscsv
require 'rscsv'
Rscsv::Writer.generate_lines([['1', '2', '3'], ['3', '4', '5']])
# => 1,2,3\n4,5,6\n
Rscsv::Writer.generate_line(['1', '2', '3'])
# => 1,2,3\n
Rscsv::Reader.parse("1,2,3\n4,5,6\n")
# => [["1", "2", "3"], ["4", "5", "6"]]
# Streaming from Enumerator
Rscsv::Reader.each(["1,2,3\n","4,5,6\n"].each) do |row|
# yields ["1", "2", "3"] and ["4", "5", "6"]
end
This is ~3x faster than using native Ruby CSV.generate
or CSV.parse
.