summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Andrew-Schwartz <andrewschwartz59@gmail.com>2024-06-12 10:54:50 -0400
committerLibravatar Andrew-Schwartz <andrewschwartz59@gmail.com>2024-06-12 10:54:50 -0400
commit06c80c5bcedd8dba187af9d187ba1ae40fa4dafa (patch)
tree12fb0403c63789c5efd9eed7753c86e23c0116ab
parente6d0b3bda5042a1017a5944a5227c97e0ed6caf9 (diff)
downloadiced-06c80c5bcedd8dba187af9d187ba1ae40fa4dafa.tar.gz
iced-06c80c5bcedd8dba187af9d187ba1ae40fa4dafa.tar.bz2
iced-06c80c5bcedd8dba187af9d187ba1ae40fa4dafa.zip
Add FromIterator for Row and Column
-rw-r--r--widget/src/column.rs42
-rw-r--r--widget/src/row.rs6
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