From e03de019881f31d69b70a64c3e278ae5200d5080 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Thu, 10 Feb 2022 23:16:21 +0700 Subject: Implement `Into` for `&'static str` in `iced_virtual` --- examples/virtual_counter/src/main.rs | 13 +++---------- virtual/src/lib.rs | 4 ++-- virtual/src/widget/button.rs | 4 ++-- virtual/src/widget/column.rs | 11 +++++++++++ virtual/src/widget/text.rs | 9 +++++++++ 5 files changed, 27 insertions(+), 14 deletions(-) diff --git a/examples/virtual_counter/src/main.rs b/examples/virtual_counter/src/main.rs index 46e8320e..10d32112 100644 --- a/examples/virtual_counter/src/main.rs +++ b/examples/virtual_counter/src/main.rs @@ -45,17 +45,10 @@ impl Sandbox for Counter { let content = Column::new() .padding(20) .align_items(Alignment::Center) - .push( - Button::new(Text::new("Increment")) - .on_press(Message::IncrementPressed), - ) + .push(Button::new("Increment").on_press(Message::IncrementPressed)) .push(Text::new(self.value.to_string()).size(50)) - .push( - Button::new(Text::new("Decrement")) - .on_press(Message::DecrementPressed), - ); + .push(Button::new("Decrement").on_press(Message::DecrementPressed)); - Virtual::new(&mut self.state, iced_virtual::Element::new(content)) - .into() + Virtual::new(&mut self.state, content).into() } } diff --git a/virtual/src/lib.rs b/virtual/src/lib.rs index bab0da15..8ba4c328 100644 --- a/virtual/src/lib.rs +++ b/virtual/src/lib.rs @@ -21,9 +21,9 @@ where { pub fn new( state: &'a mut State, - content: Element, + content: impl Into>, ) -> Self { - let _ = state.diff(content); + let _ = state.diff(content.into()); Self { state } } diff --git a/virtual/src/widget/button.rs b/virtual/src/widget/button.rs index 534dd13a..ece90811 100644 --- a/virtual/src/widget/button.rs +++ b/virtual/src/widget/button.rs @@ -23,9 +23,9 @@ pub struct Button { } impl Button { - pub fn new(content: impl Widget + 'static) -> Self { + pub fn new(content: impl Into>) -> Self { Button { - content: Element::new(content), + content: content.into(), on_press: None, style_sheet: Default::default(), width: Length::Shrink, diff --git a/virtual/src/widget/column.rs b/virtual/src/widget/column.rs index e7649bc1..2f70282a 100644 --- a/virtual/src/widget/column.rs +++ b/virtual/src/widget/column.rs @@ -207,3 +207,14 @@ where } } } + +impl Into> + for Column +where + Message: 'static, + Renderer: iced_native::Renderer + 'static, +{ + fn into(self) -> Element { + Element::new(self) + } +} diff --git a/virtual/src/widget/text.rs b/virtual/src/widget/text.rs index 91da7e99..e3a7d299 100644 --- a/virtual/src/widget/text.rs +++ b/virtual/src/widget/text.rs @@ -174,3 +174,12 @@ where Element::new(self) } } + +impl Into> for &'static str +where + Renderer: text::Renderer + 'static, +{ + fn into(self) -> Element { + Text::new(self).into() + } +} -- cgit