Skip to content

lautis/rscsv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rscsv

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

Build Status

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.