Module csv::index
[−]
[src]
This sub-module provides experimental CSV record indexing.
It is simplistic, but once a CSV index is created, you can use it to jump to any record in the data instantly. In essence, it gives you random access for a modest upfront cost in time and memory.
Simple example
This example shows how to create an in-memory index and use it to jump to
any record in the data. (The indexing interface works with seekable readers
and writers, so you can use std::fs::File
for this too.)
use std::io::{self, Write}; use csv::index::{Indexed, create_index}; let data = " h1,h2,h3 a,b,c d,e,f g,h,i "; let new_csv_rdr = || csv::Reader::from_string(data); let mut index_data = io::Cursor::new(Vec::new()); create_index(new_csv_rdr(), index_data.by_ref()).unwrap(); let mut index = Indexed::open(new_csv_rdr(), index_data).unwrap(); // Seek to the second record and read its data. This is done *without* // reading the first record. index.seek(1).unwrap(); // Read the first row at this position (which is the second record). // Since `Indexed` derefs to a `csv::Reader`, we can call CSV reader methods // on it directly. let row = index.records().next().unwrap().unwrap(); assert_eq!(row, vec!["d", "e", "f"]);
Structs
Indexed |
A type for representing CSV data with a basic record index. |
Functions
create_index |
Creates a new index for the given CSV reader. |