nom-gtf

Crates.ionom-gtf
lib.rsnom-gtf
version0.1.3
sourcesrc
created_at2022-09-23 00:34:28.314021
updated_at2022-09-23 06:16:00.266545
descriptionA barebones GTF reader written with nom
homepage
repositoryhttps://github.com/noamteyssier/nom-gtf
max_upload_size
id672058
size32,608
Noam Teyssier (noamteyssier)

documentation

https://docs.rs/nom-gtf

README

nom-gtf

a parser for gtf built using nom.

This achieves near wc -l throughput.

Usage

This is meant to be used as an iterator and receives any item implementing BufRead.

From File

use std::{fs::File, io::BufReader};
use nom_gtf::GtfReader;

let handle = File::open("data/example.gtf")
  .map(BufReader::new)
  .unwrap();

let num_records = GtfReader::from_bufread(handle)
  .filter_map(|x| x.ok())
  .count();

assert_eq!(num_records, 10);

From Gzip File

use std::{fs::File, io::BufReader};
use flate2::read::MultiGzDecoder;
use nom_gtf::GtfReader;

let handle = File::open("data/example.gtf.gz")
  .map(MultiGzDecoder::new)
  .map(BufReader::new)
  .unwrap();

let num_records = GtfReader::from_bufread(handle)
  .filter_map(|x| x.ok())
  .count();

assert_eq!(num_records, 10);
Commit count: 60

cargo fmt