From 06c80c5bcedd8dba187af9d187ba1ae40fa4dafa Mon Sep 17 00:00:00 2001 From: Andrew-Schwartz Date: Wed, 12 Jun 2024 10:54:50 -0400 Subject: Add FromIterator for Row and Column --- widget/src/column.rs | 42 ++++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) (limited to 'widget/src/column.rs') 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>, + children: impl IntoIterator>, ) -> 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>, + children: impl IntoIterator>, ) -> 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> for Column<'a, Message, Theme, Renderer> { + fn from_iter>>(iter: T) -> Self { + Self::with_children(iter) + } +} + impl<'a, Message, Theme, Renderer> Widget - 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 { self.children.iter().map(Tree::new).collect() @@ -326,11 +332,11 @@ where } impl<'a, Message, Theme, Renderer> From> - 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) -- cgit