Experiments combining Ruby, Rust, and CSV
MIT License
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
.