rsomics_bed_cluster/
lib.rs1use 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}