From 8f3773c55e987ab11a9537553860c87e4d65ba5f Mon Sep 17 00:00:00 2001 From: mibac138 <5672750+mibac138@users.noreply.github.com> Date: Fri, 16 Apr 2021 17:23:28 +0200 Subject: [PATCH] Replace DrawTarget::Term::last_state with last_line_count Only the amount of progress lines (total lines - orphan lines) was ever used from `last_state`. Size went down from 96 to 64 bytes --- src/state.rs | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/src/state.rs b/src/state.rs index d816b110..e3d6cfef 100644 --- a/src/state.rs +++ b/src/state.rs @@ -313,14 +313,6 @@ pub(crate) struct ProgressDrawState { } impl ProgressDrawState { - pub fn clear_term(&self, term: &Term) -> io::Result<()> { - term.clear_last_lines(self.lines.len() - self.orphan_lines) - } - - pub fn move_cursor(&self, term: &Term) -> io::Result<()> { - term.move_cursor_up(self.lines.len() - self.orphan_lines) - } - pub fn draw_to_term(&self, term: &Term) -> io::Result<()> { for line in &self.lines { term.write_line(line)?; @@ -428,7 +420,7 @@ impl ProgressDrawTarget { ProgressDrawTarget { kind: ProgressDrawTargetKind::Term { term, - last_state: None, + last_line_count: 0, rate, last_draw: Instant::now() - rate, }, @@ -474,7 +466,7 @@ impl ProgressDrawTarget { match self.kind { ProgressDrawTargetKind::Term { ref term, - ref mut last_state, + ref mut last_line_count, rate, ref mut last_draw, } => { @@ -483,16 +475,14 @@ impl ProgressDrawTarget { || rate == Duration::from_secs(0) || last_draw.elapsed() > rate { - if let Some(ref last_state) = *last_state { - if !draw_state.lines.is_empty() && draw_state.move_cursor { - last_state.move_cursor(term)?; - } else { - last_state.clear_term(term)?; - } + if !draw_state.lines.is_empty() && draw_state.move_cursor { + term.move_cursor_up(*last_line_count)?; + } else { + term.clear_last_lines(*last_line_count)?; } draw_state.draw_to_term(term)?; term.flush()?; - *last_state = Some(draw_state); + *last_line_count = draw_state.lines.len() - draw_state.orphan_lines; *last_draw = Instant::now(); } } @@ -534,7 +524,7 @@ impl ProgressDrawTarget { pub(crate) enum ProgressDrawTargetKind { Term { term: Term, - last_state: Option, + last_line_count: usize, rate: Duration, last_draw: Instant, },