diff options
author | 2024-04-01 11:30:01 +0200 | |
---|---|---|
committer | 2024-04-01 11:30:01 +0200 | |
commit | 6216c513d5e5853bf1d43342094e91a74981f4f2 (patch) | |
tree | a11d3e6533485c5811f0f42d4cf5518c30626bdf /core | |
parent | c7a4fad4a24dec8536f450d447a9852846f2d711 (diff) | |
download | iced-6216c513d5e5853bf1d43342094e91a74981f4f2.tar.gz iced-6216c513d5e5853bf1d43342094e91a74981f4f2.tar.bz2 iced-6216c513d5e5853bf1d43342094e91a74981f4f2.zip |
Use generic `Content` in `Text` to avoid reallocation in `fill_text`
Diffstat (limited to 'core')
-rw-r--r-- | core/src/renderer/null.rs | 6 | ||||
-rw-r--r-- | core/src/text.rs | 6 | ||||
-rw-r--r-- | core/src/text/paragraph.rs | 6 |
3 files changed, 9 insertions, 9 deletions
diff --git a/core/src/renderer/null.rs b/core/src/renderer/null.rs index c26ce1a5..1caf71b3 100644 --- a/core/src/renderer/null.rs +++ b/core/src/renderer/null.rs @@ -67,7 +67,7 @@ impl text::Renderer for () { fn fill_text( &mut self, - _paragraph: Text<'_, Self::Font>, + _paragraph: Text, _position: Point, _color: Color, _clip_bounds: Rectangle, @@ -78,11 +78,11 @@ impl text::Renderer for () { impl text::Paragraph for () { type Font = Font; - fn with_text(_text: Text<'_, Self::Font>) -> Self {} + fn with_text(_text: Text<&str>) -> Self {} fn resize(&mut self, _new_bounds: Size) {} - fn compare(&self, _text: Text<'_, Self::Font>) -> text::Difference { + fn compare(&self, _text: Text<&str>) -> text::Difference { text::Difference::None } diff --git a/core/src/text.rs b/core/src/text.rs index edef79c2..3f1d2c77 100644 --- a/core/src/text.rs +++ b/core/src/text.rs @@ -16,9 +16,9 @@ use std::hash::{Hash, Hasher}; /// A paragraph. #[derive(Debug, Clone, Copy)] -pub struct Text<'a, Font> { +pub struct Text<Content = String, Font = crate::Font> { /// The content of the paragraph. - pub content: &'a str, + pub content: Content, /// The bounds of the paragraph. pub bounds: Size, @@ -219,7 +219,7 @@ pub trait Renderer: crate::Renderer { /// [`Color`]. fn fill_text( &mut self, - text: Text<'_, Self::Font>, + text: Text<String, Self::Font>, position: Point, color: Color, clip_bounds: Rectangle, diff --git a/core/src/text/paragraph.rs b/core/src/text/paragraph.rs index de1fb74d..8ff04015 100644 --- a/core/src/text/paragraph.rs +++ b/core/src/text/paragraph.rs @@ -8,14 +8,14 @@ pub trait Paragraph: Sized + Default { type Font: Copy + PartialEq; /// Creates a new [`Paragraph`] laid out with the given [`Text`]. - fn with_text(text: Text<'_, Self::Font>) -> Self; + fn with_text(text: Text<&str, Self::Font>) -> Self; /// Lays out the [`Paragraph`] with some new boundaries. fn resize(&mut self, new_bounds: Size); /// Compares the [`Paragraph`] with some desired [`Text`] and returns the /// [`Difference`]. - fn compare(&self, text: Text<'_, Self::Font>) -> Difference; + fn compare(&self, text: Text<&str, Self::Font>) -> Difference; /// Returns the horizontal alignment of the [`Paragraph`]. fn horizontal_alignment(&self) -> alignment::Horizontal; @@ -35,7 +35,7 @@ pub trait Paragraph: Sized + Default { fn grapheme_position(&self, line: usize, index: usize) -> Option<Point>; /// Updates the [`Paragraph`] to match the given [`Text`], if needed. - fn update(&mut self, text: Text<'_, Self::Font>) { + fn update(&mut self, text: Text<&str, Self::Font>) { match self.compare(text) { Difference::None => {} Difference::Bounds => { |