diff options
author | 2024-06-12 10:54:50 -0400 | |
---|---|---|
committer | 2024-06-12 10:54:50 -0400 | |
commit | 06c80c5bcedd8dba187af9d187ba1ae40fa4dafa (patch) | |
tree | 12fb0403c63789c5efd9eed7753c86e23c0116ab | |
parent | e6d0b3bda5042a1017a5944a5227c97e0ed6caf9 (diff) | |
download | iced-06c80c5bcedd8dba187af9d187ba1ae40fa4dafa.tar.gz iced-06c80c5bcedd8dba187af9d187ba1ae40fa4dafa.tar.bz2 iced-06c80c5bcedd8dba187af9d187ba1ae40fa4dafa.zip |
Add FromIterator for Row and Column
-rw-r--r-- | widget/src/column.rs | 42 | ||||
-rw-r--r-- | widget/src/row.rs | 6 |
2 files changed, 30 insertions, 18 deletions
diff --git a/widget/src/column.rs b/widget/src/column.rs index df7829b3..708c0806 100644 --- a/widget/src/column.rs +++ b/widget/src/column.rs @@ -1,14 +1,14 @@ //! Distribute content vertically. +use crate::core::{ + Alignment, Clipboard, Element, Layout, Length, Padding, Pixels, Rectangle, + Shell, Size, Vector, Widget, +}; use crate::core::event::{self, Event}; use crate::core::layout; use crate::core::mouse; use crate::core::overlay; use crate::core::renderer; use crate::core::widget::{Operation, Tree}; -use crate::core::{ - Alignment, Clipboard, Element, Layout, Length, Padding, Pixels, Rectangle, - Shell, Size, Vector, Widget, -}; /// A container that distributes its contents vertically. #[allow(missing_debug_implementations)] @@ -25,8 +25,8 @@ pub struct Column<'a, Message, Theme = crate::Theme, Renderer = crate::Renderer> } impl<'a, Message, Theme, Renderer> Column<'a, Message, Theme, Renderer> -where - Renderer: crate::core::Renderer, + where + Renderer: crate::core::Renderer, { /// Creates an empty [`Column`]. pub fn new() -> Self { @@ -40,7 +40,7 @@ where /// Creates a [`Column`] with the given elements. pub fn with_children( - children: impl IntoIterator<Item = Element<'a, Message, Theme, Renderer>>, + children: impl IntoIterator<Item=Element<'a, Message, Theme, Renderer>>, ) -> Self { let iterator = children.into_iter(); @@ -146,25 +146,31 @@ where /// Extends the [`Column`] with the given children. pub fn extend( self, - children: impl IntoIterator<Item = Element<'a, Message, Theme, Renderer>>, + children: impl IntoIterator<Item=Element<'a, Message, Theme, Renderer>>, ) -> Self { children.into_iter().fold(self, Self::push) } } impl<'a, Message, Renderer> Default for Column<'a, Message, Renderer> -where - Renderer: crate::core::Renderer, + where + Renderer: crate::core::Renderer, { fn default() -> Self { Self::new() } } +impl<'a, Message, Theme, Renderer: crate::core::Renderer> FromIterator<Element<'a, Message, Theme, Renderer>> for Column<'a, Message, Theme, Renderer> { + fn from_iter<T: IntoIterator<Item=Element<'a, Message, Theme, Renderer>>>(iter: T) -> Self { + Self::with_children(iter) + } +} + impl<'a, Message, Theme, Renderer> Widget<Message, Theme, Renderer> - for Column<'a, Message, Theme, Renderer> -where - Renderer: crate::core::Renderer, +for Column<'a, Message, Theme, Renderer> + where + Renderer: crate::core::Renderer, { fn children(&self) -> Vec<Tree> { self.children.iter().map(Tree::new).collect() @@ -326,11 +332,11 @@ where } impl<'a, Message, Theme, Renderer> From<Column<'a, Message, Theme, Renderer>> - for Element<'a, Message, Theme, Renderer> -where - Message: 'a, - Theme: 'a, - Renderer: crate::core::Renderer + 'a, +for Element<'a, Message, Theme, Renderer> + where + Message: 'a, + Theme: 'a, + Renderer: crate::core::Renderer + 'a, { fn from(column: Column<'a, Message, Theme, Renderer>) -> Self { Self::new(column) diff --git a/widget/src/row.rs b/widget/src/row.rs index fa352171..5a6b368a 100644 --- a/widget/src/row.rs +++ b/widget/src/row.rs @@ -152,6 +152,12 @@ where } } +impl<'a, Message, Theme, Renderer: crate::core::Renderer> FromIterator<Element<'a, Message, Theme, Renderer>> for Row<'a, Message, Theme, Renderer> { + fn from_iter<T: IntoIterator<Item=Element<'a, Message, Theme, Renderer>>>(iter: T) -> Self { + Self::with_children(iter) + } +} + impl<'a, Message, Theme, Renderer> Widget<Message, Theme, Renderer> for Row<'a, Message, Theme, Renderer> where |