From 59ab95cc76009f9a6e048f333d2a99f0216572b0 Mon Sep 17 00:00:00 2001 From: rhysd Date: Fri, 2 Aug 2024 22:43:50 +0900 Subject: [PATCH] remove redundant `clone()` call with ratatui --- src/widget.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/widget.rs b/src/widget.rs index 00aadc4..6afd884 100644 --- a/src/widget.rs +++ b/src/widget.rs @@ -92,7 +92,6 @@ fn next_scroll_top(prev_top: u16, cursor: u16, len: u16) -> u16 { } impl<'a> TextArea<'a> { - #[inline] fn text_widget(&'a self, top_row: usize, height: usize) -> Text<'a> { let lines_len = self.lines().len(); let lnum_len = num_digits(lines_len); @@ -104,7 +103,6 @@ impl<'a> TextArea<'a> { Text::from(lines) } - #[inline] fn placeholder_widget(&'a self) -> Text<'a> { let cursor = Span::styled(" ", self.cursor_style); let text = Span::raw(self.placeholder.as_str()); @@ -156,7 +154,11 @@ impl Widget for &TextArea<'_> { .alignment(self.alignment()); if let Some(b) = self.block() { text_area = b.inner(area); - b.clone().render(area, buf) + // ratatui does not need `clone()` call because `Block` implements `WidgetRef` and `&T` implements `Widget` + // where `T: Widget`. So `b.render` internally calls `b.render_ref` and it doesn't move out `self`. + #[cfg(feature = "tuirs")] + let b = b.clone(); + b.render(area, buf) } if top_col != 0 { inner = inner.scroll((0, top_col));