summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-04-01 11:30:01 +0200
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-04-01 11:30:01 +0200
commit6216c513d5e5853bf1d43342094e91a74981f4f2 (patch)
treea11d3e6533485c5811f0f42d4cf5518c30626bdf /core
parentc7a4fad4a24dec8536f450d447a9852846f2d711 (diff)
downloadiced-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.rs6
-rw-r--r--core/src/text.rs6
-rw-r--r--core/src/text/paragraph.rs6
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 => {