From a082207283c01f067d371df4bc366ef1d55d8da1 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Sat, 22 Jun 2019 09:12:54 -0600 Subject: [PATCH] perf(report): Reduce grabbing of locks --- src/report.rs | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/report.rs b/src/report.rs index a2fbbed..d3cc8e3 100644 --- a/src/report.rs +++ b/src/report.rs @@ -1,3 +1,5 @@ +use std::io::{self, Write}; + #[derive(Copy, Clone, Debug, Serialize)] pub struct Message<'m> { pub path: &'m std::path::Path, @@ -33,21 +35,33 @@ pub fn print_long(msg: Message) { let hl_indent: String = itertools::repeat_n(" ", msg.col_num).collect(); let hl: String = itertools::repeat_n("^", msg.word.len()).collect(); - println!("error: `{}` should be `{}`", msg.word, msg.correction); - println!( + let stdout = io::stdout(); + let mut handle = stdout.lock(); + + writeln!( + handle, + "error: `{}` should be `{}`", + msg.word, msg.correction + ) + .unwrap(); + writeln!( + handle, " --> {}:{}:{}", msg.path.display(), msg.line_num, msg.col_num - ); - println!("{} |", line_indent); - println!( + ) + .unwrap(); + writeln!(handle, "{} |", line_indent).unwrap(); + writeln!( + handle, "{} | {}", msg.line_num, String::from_utf8_lossy(msg.line).trim_end() - ); - println!("{} | {}{}", line_indent, hl_indent, hl); - println!("{} |", line_indent); + ) + .unwrap(); + writeln!(handle, "{} | {}{}", line_indent, hl_indent, hl).unwrap(); + writeln!(handle, "{} |", line_indent).unwrap(); } pub fn print_json(msg: Message) {