# 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
```rust
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
```rust
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);
```