diff options
author | 2022-02-10 23:16:21 +0700 | |
---|---|---|
committer | 2022-02-10 23:16:21 +0700 | |
commit | e03de019881f31d69b70a64c3e278ae5200d5080 (patch) | |
tree | e6c3a85eb347f61a69c3ad2e733ca3ca5245481a | |
parent | 5225e0e304bf5b407977e549c48ce9dea26b8c40 (diff) | |
download | iced-e03de019881f31d69b70a64c3e278ae5200d5080.tar.gz iced-e03de019881f31d69b70a64c3e278ae5200d5080.tar.bz2 iced-e03de019881f31d69b70a64c3e278ae5200d5080.zip |
Implement `Into<Element>` for `&'static str` in `iced_virtual`
Diffstat (limited to '')
-rw-r--r-- | examples/virtual_counter/src/main.rs | 13 | ||||
-rw-r--r-- | virtual/src/lib.rs | 4 | ||||
-rw-r--r-- | virtual/src/widget/button.rs | 4 | ||||
-rw-r--r-- | virtual/src/widget/column.rs | 11 | ||||
-rw-r--r-- | 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<Message, Renderer>, - content: Element<Message, Renderer>, + content: impl Into<Element<Message, Renderer>>, ) -> 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<Message, Renderer> { } impl<Message, Renderer> Button<Message, Renderer> { - pub fn new(content: impl Widget<Message, Renderer> + 'static) -> Self { + pub fn new(content: impl Into<Element<Message, Renderer>>) -> 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<Message, Renderer> Into<Element<Message, Renderer>> + for Column<Message, Renderer> +where + Message: 'static, + Renderer: iced_native::Renderer + 'static, +{ + fn into(self) -> Element<Message, Renderer> { + 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<Message, Renderer> Into<Element<Message, Renderer>> for &'static str +where + Renderer: text::Renderer + 'static, +{ + fn into(self) -> Element<Message, Renderer> { + Text::new(self).into() + } +} |