From 7048be042bd5e223a4285228f5478ff8d577e3d9 Mon Sep 17 00:00:00 2001 From: Bart Mesuere Date: Mon, 2 Feb 2026 19:00:50 +0100 Subject: [PATCH] replace string formatting and appending with write! --- src/gene.rs | 111 +++++++++++++++++++++++++--------------------------- 1 file changed, 54 insertions(+), 57 deletions(-) diff --git a/src/gene.rs b/src/gene.rs index 0d8d201..8223662 100644 --- a/src/gene.rs +++ b/src/gene.rs @@ -1,6 +1,7 @@ extern crate thiserror; use thiserror::Error; +use std::io::Write; use crate::dna::Nuc::{A, C, G, T}; use crate::dna::{trinucleotide, Nuc, ANTI_CODON_CODE, CODON_CODE}; @@ -40,7 +41,7 @@ impl ReadPrediction { pub fn meta(&self, buf: &mut Vec) -> Result<(), GeneError> { if !self.genes.is_empty() { - buf.append(&mut format!(">{}\n", std::str::from_utf8(&self.head)?).into_bytes()) + write!(buf, ">{}\n", std::str::from_utf8(&self.head)?).unwrap(); } for gene in &self.genes { gene.meta(buf); @@ -87,43 +88,41 @@ pub struct Gene { impl Gene { pub fn meta(&self, buf: &mut Vec) { - buf.append( - &mut format!( - "{}\t{}\t{}\t{}\t{:.6}\tI:{}\tD:{}\n", - self.start, - self.end, - if self.forward_strand { '+' } else { '-' }, - self.frame, - self.score, - self.inserted - .iter() - .map(|i: &usize| { format!("{},", i) }) - .collect::(), - self.deleted - .iter() - .map(|i: &usize| { format!("{},", i) }) - .collect::() - ) - .into_bytes(), - ); + write!( + buf, + "{}\t{}\t{}\t{}\t{:.6}\tI:{}\tD:{}\n", + self.start, + self.end, + if self.forward_strand { '+' } else { '-' }, + self.frame, + self.score, + self.inserted + .iter() + .map(|i: &usize| { format!("{},", i) }) + .collect::(), + self.deleted + .iter() + .map(|i: &usize| { format!("{},", i) }) + .collect::() + ) + .unwrap(); } pub fn gff(&self, buf: &mut Vec, head: &str) { - buf.append( - &mut format!( - "{}\tFGS\tCDS\t{}\t{}\t.\t{}\t{}\tID={}_{}_{}_{};product=predicted protein\n", - head, - self.start, - self.end, - if self.forward_strand { '+' } else { '-' }, - self.frame - 1, - head, - self.start, - self.end, - if self.forward_strand { '+' } else { '-' } - ) - .into_bytes(), - ); + write!( + buf, + "{}\tFGS\tCDS\t{}\t{}\t.\t{}\t{}\tID={}_{}_{}_{};product=predicted protein\n", + head, + self.start, + self.end, + if self.forward_strand { '+' } else { '-' }, + self.frame - 1, + head, + self.start, + self.end, + if self.forward_strand { '+' } else { '-' } + ) + .unwrap(); } pub fn dna(&self, buf: &mut Vec, head: &Vec, formatted: bool) -> Result<(), GeneError> { @@ -145,17 +144,16 @@ impl Gene { .collect(), }; - buf.append( - &mut format!( - ">{}_{}_{}_{}\n{}\n", - std::str::from_utf8(head)?, - self.start, - self.end, - if self.forward_strand { '+' } else { '-' }, - std::str::from_utf8(&dna)?, - ) - .into_bytes(), - ); + write!( + buf, + ">{}_{}_{}_{}\n{}\n", + std::str::from_utf8(head)?, + self.start, + self.end, + if self.forward_strand { '+' } else { '-' }, + std::str::from_utf8(&dna)?, + ) + .unwrap(); Ok(()) } @@ -202,17 +200,16 @@ impl Gene { } } - buf.append( - &mut format!( - ">{}_{}_{}_{}\n{}\n", - std::str::from_utf8(head)?, - self.start, - self.end, - if self.forward_strand { '+' } else { '-' }, - std::str::from_utf8(&protein)?, - ) - .into_bytes(), - ); + write!( + buf, + ">{}_{}_{}_{}\n{}\n", + std::str::from_utf8(head)?, + self.start, + self.end, + if self.forward_strand { '+' } else { '-' }, + std::str::from_utf8(&protein)?, + ) + .unwrap(); Ok(()) } }