rscsv

Experiments combining Ruby, Rust, and CSV

MIT License

Downloads
41.9K
Stars
16

Rscsv

Fast CSV using Rust extensions. Can read arrays of arrays from strings and write strings from arrays of arrays.

Installation

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

Usage

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.