From ce3b89639d84a279bbc0f4dac912a136488d0bec Mon Sep 17 00:00:00 2001 From: "Ram.Type-0" Date: Mon, 1 Nov 2021 23:59:04 +0900 Subject: Take `Cow` in `Text::new` --- native/src/widget/text.rs | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) (limited to 'native/src/widget/text.rs') diff --git a/native/src/widget/text.rs b/native/src/widget/text.rs index b30f4518..dab6e874 100644 --- a/native/src/widget/text.rs +++ b/native/src/widget/text.rs @@ -6,6 +6,8 @@ use crate::text; use crate::widget::Tree; use crate::{Element, Layout, Length, Point, Rectangle, Size, Widget}; +use std::borrow::Cow; + pub use iced_style::text::{Appearance, StyleSheet}; /// A paragraph of text. @@ -15,7 +17,7 @@ pub use iced_style::text::{Appearance, StyleSheet}; /// ``` /// # use iced_native::Color; /// # -/// # type Text = iced_native::widget::Text; +/// # type Text<'a> = iced_native::widget::Text<'a, iced_native::renderer::Null>; /// # /// Text::new("I <3 iced!") /// .size(40) @@ -24,12 +26,12 @@ pub use iced_style::text::{Appearance, StyleSheet}; /// /// ![Text drawn by `iced_wgpu`](https://github.com/iced-rs/iced/blob/7760618fb112074bc40b148944521f312152012a/docs/images/text.png?raw=true) #[allow(missing_debug_implementations)] -pub struct Text +pub struct Text<'a, Renderer> where Renderer: text::Renderer, Renderer::Theme: StyleSheet, { - content: String, + content: Cow<'a, str>, size: Option, width: Length, height: Length, @@ -39,15 +41,15 @@ where style: ::Style, } -impl Text +impl<'a, Renderer> Text<'a, Renderer> where Renderer: text::Renderer, Renderer::Theme: StyleSheet, { /// Create a new fragment of [`Text`] with the given contents. - pub fn new(label: T) -> Self { + pub fn new(content: impl Into>) -> Self { Text { - content: label.to_string(), + content: content.into(), size: None, font: Default::default(), width: Length::Shrink, @@ -112,7 +114,7 @@ where } } -impl Widget for Text +impl<'a, Message, Renderer> Widget for Text<'a, Renderer> where Renderer: text::Renderer, Renderer::Theme: StyleSheet, @@ -216,18 +218,18 @@ pub fn draw( }); } -impl<'a, Message, Renderer> From> +impl<'a, Message, Renderer> From> for Element<'a, Message, Renderer> where Renderer: text::Renderer + 'a, Renderer::Theme: StyleSheet, { - fn from(text: Text) -> Element<'a, Message, Renderer> { + fn from(text: Text<'a, Renderer>) -> Element<'a, Message, Renderer> { Element::new(text) } } -impl Clone for Text +impl<'a, Renderer> Clone for Text<'a, Renderer> where Renderer: text::Renderer, Renderer::Theme: StyleSheet, -- cgit