From 037861e58886fd8220714a1f358de6663549b360 Mon Sep 17 00:00:00 2001 From: TA Thanh Dinh Date: Fri, 17 Aug 2018 17:48:15 +0200 Subject: [PATCH] replace trait object BufRead by generic --- src/features.rs | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/features.rs b/src/features.rs index 294c76a6..5a8e7b1b 100644 --- a/src/features.rs +++ b/src/features.rs @@ -86,25 +86,26 @@ fn print_file( printer: &mut Printer, filename: Option<&str>, ) -> Result<()> { - let stdin = io::stdin(); // TODO: this is not always needed - { - let reader: Box = match filename { - None => Box::new(stdin.lock()), - Some(filename) => Box::new(BufReader::new(File::open(filename)?)), - }; + printer.print_header(filename)?; - let highlighter = HighlightLines::new(syntax, theme); - - printer.print_header(filename)?; - print_file_ranges(printer, reader, highlighter, &printer.config.line_range)?; - printer.print_footer()?; + let highlighter = HighlightLines::new(syntax, theme); + match filename { + None => { + let stdin = io::stdin(); // TODO: this is not always needed + print_file_ranges(printer, stdin.lock(), highlighter, &printer.config.line_range)?; + }, + Some(filename) => { + print_file_ranges(printer, BufReader::new(File::open(filename)?), highlighter, &printer.config.line_range)? + }, } + + printer.print_footer()?; Ok(()) } -fn print_file_ranges<'a>( +fn print_file_ranges( printer: &mut Printer, - mut reader: Box, + mut reader: T, mut highlighter: HighlightLines, line_ranges: &Option, ) -> Result<()> {