1use std::fs::File;
2use std::io::{self, Read};
3use std::path::PathBuf;
4
5use crate::errors::*;
6use crate::gene::GeneModel;
7
8use rayon::prelude::*;
9
10pub fn parallel_parse<'a>(s: &'a str, opt: &str) -> Result<Vec<GeneModel>> {
11 let records = s
12 .par_lines()
13 .filter(|line| !line.starts_with("#"))
14 .map(|line| GeneModel::parse(line, opt))
15 .collect::<Vec<GeneModel>>();
16
17 return Ok(records);
18}
19
20pub fn reader(file: &PathBuf) -> io::Result<String> {
21 let mut file = File::open(file)?;
22 let mut contents = String::new();
23 file.read_to_string(&mut contents)?;
24 Ok(contents)
25}