From b97519170b36469e360e5ac9746239c7ab6dc42c Mon Sep 17 00:00:00 2001 From: Barnabas Date: Tue, 29 Dec 2020 16:12:08 +0100 Subject: [PATCH] get_color to Box instead of heap-allocating a ref. --- src/colors.rs | 24 ++++++++++++------------ src/view.rs | 32 ++++++++++++++++---------------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/colors.rs b/src/colors.rs index be5f92d..3ee0364 100644 --- a/src/colors.rs +++ b/src/colors.rs @@ -1,16 +1,16 @@ use termion::color; -pub fn get_color(color_name: &str) -> Box<&dyn color::Color> { +pub fn get_color(color_name: &str) -> Box { match color_name { - "black" => Box::new(&color::Black), - "red" => Box::new(&color::Red), - "green" => Box::new(&color::Green), - "yellow" => Box::new(&color::Yellow), - "blue" => Box::new(&color::Blue), - "magenta" => Box::new(&color::Magenta), - "cyan" => Box::new(&color::Cyan), - "white" => Box::new(&color::White), - "default" => Box::new(&color::Reset), + "black" => Box::new(color::Black), + "red" => Box::new(color::Red), + "green" => Box::new(color::Green), + "yellow" => Box::new(color::Yellow), + "blue" => Box::new(color::Blue), + "magenta" => Box::new(color::Magenta), + "cyan" => Box::new(color::Cyan), + "white" => Box::new(color::White), + "default" => Box::new(color::Reset), _ => panic!("Unknown color: {}", color_name), } } @@ -21,7 +21,7 @@ mod tests { #[test] fn match_color() { - let text1 = println!("{}{}", color::Fg(*get_color("green")), "foo"); + let text1 = println!("{}{}", color::Fg(&*get_color("green")), "foo"); let text2 = println!("{}{}", color::Fg(color::Green), "foo"); assert_eq!(text1, text2); @@ -30,6 +30,6 @@ mod tests { #[test] #[should_panic] fn no_match_color() { - println!("{}{}", color::Fg(*get_color("wat")), "foo"); + println!("{}{}", color::Fg(&*get_color("wat")), "foo"); } } diff --git a/src/view.rs b/src/view.rs index 2e01246..3982cd4 100644 --- a/src/view.rs +++ b/src/view.rs @@ -17,12 +17,12 @@ pub struct View<'a> { contrast: bool, position: &'a str, matches: Vec>, - select_foreground_color: Box<&'a dyn color::Color>, - select_background_color: Box<&'a dyn color::Color>, - foreground_color: Box<&'a dyn color::Color>, - background_color: Box<&'a dyn color::Color>, - hint_background_color: Box<&'a dyn color::Color>, - hint_foreground_color: Box<&'a dyn color::Color>, + select_foreground_color: Box, + select_background_color: Box, + foreground_color: Box, + background_color: Box, + hint_background_color: Box, + hint_foreground_color: Box, } enum CaptureEvent { @@ -38,12 +38,12 @@ impl<'a> View<'a> { unique: bool, contrast: bool, position: &'a str, - select_foreground_color: Box<&'a dyn color::Color>, - select_background_color: Box<&'a dyn color::Color>, - foreground_color: Box<&'a dyn color::Color>, - background_color: Box<&'a dyn color::Color>, - hint_foreground_color: Box<&'a dyn color::Color>, - hint_background_color: Box<&'a dyn color::Color>, + select_foreground_color: Box, + select_background_color: Box, + foreground_color: Box, + background_color: Box, + hint_foreground_color: Box, + hint_background_color: Box, ) -> View<'a> { let matches = state.matches(reverse, unique); let skip = if reverse { matches.len() - 1 } else { 0 }; @@ -119,8 +119,8 @@ impl<'a> View<'a> { print!( "{goto}{background}{foregroud}{text}{resetf}{resetb}", goto = cursor::Goto(offset + 1, mat.y as u16 + 1), - foregroud = color::Fg(**selected_color), - background = color::Bg(**selected_background_color), + foregroud = color::Fg(&**selected_color), + background = color::Bg(&**selected_background_color), resetf = color::Fg(color::Reset), resetb = color::Bg(color::Reset), text = &text @@ -140,8 +140,8 @@ impl<'a> View<'a> { print!( "{goto}{background}{foregroud}{text}{resetf}{resetb}", goto = cursor::Goto(final_position as u16 + 1, mat.y as u16 + 1), - foregroud = color::Fg(*self.hint_foreground_color), - background = color::Bg(*self.hint_background_color), + foregroud = color::Fg(&*self.hint_foreground_color), + background = color::Bg(&*self.hint_background_color), resetf = color::Fg(color::Reset), resetb = color::Bg(color::Reset), text = &text