Skip to main content

rsomics_bed_cluster/
lib.rs

1use rsomics_common::{Result, RsomicsError};
2use std::fs::File;
3use std::io::{BufRead, BufReader, BufWriter, Write};
4use std::path::Path;
5
6pub fn run(input: &Path, output: &mut dyn Write) -> Result<u64> {
7    let file = File::open(input)
8        .map_err(|e| RsomicsError::InvalidInput(format!("{}: {e}", input.display())))?;
9    let reader = BufReader::new(file);
10    let mut out = BufWriter::with_capacity(64 * 1024, output);
11    let mut count: u64 = 0;
12    for line in reader.lines() {
13        let line = line.map_err(RsomicsError::Io)?;
14        writeln!(out, "{line}").map_err(RsomicsError::Io)?;
15        count += 1;
16    }
17    out.flush().map_err(RsomicsError::Io)?;
18    Ok(count)
19}