From 6146382676a7bff4764e86e99d0d053f5fbbc045 Mon Sep 17 00:00:00 2001
From: Richard Custodio <richardcustodio@pm.me>
Date: Mon, 18 Mar 2024 16:48:15 -0300
Subject: feat: add `text` macro to `widget::helpers`

---
 widget/src/helpers.rs | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/widget/src/helpers.rs b/widget/src/helpers.rs
index 4863e550..1b57cd21 100644
--- a/widget/src/helpers.rs
+++ b/widget/src/helpers.rs
@@ -51,6 +51,19 @@ macro_rules! row {
     );
 }
 
+/// Creates a new [`Text`] widget with the provided content.
+///
+/// [`Text`]: core::widget::Text
+#[macro_export]
+macro_rules! text {
+    () => (
+        $crate::Text::new()
+    );
+    ($($arg:tt)*) => {
+        $crate::Text::new(format!($($arg)*))
+    };
+}
+
 /// Creates a new [`Container`] with the provided content.
 ///
 /// [`Container`]: crate::Container
-- 
cgit 


From bf9bbf4a3edf22f21c79901999cc104cb29fccce Mon Sep 17 00:00:00 2001
From: Richard Custodio <richardcustodio@pm.me>
Date: Mon, 18 Mar 2024 17:08:56 -0300
Subject: refactor: replace `text(format!(` with `text` macro

---
 examples/custom_quad/src/main.rs         |  4 ++--
 examples/custom_widget/src/main.rs       |  2 +-
 examples/download_progress/src/main.rs   |  2 +-
 examples/events/src/main.rs              |  2 +-
 examples/game_of_life/src/main.rs        |  2 +-
 examples/integration/src/controls.rs     |  2 +-
 examples/lazy/src/main.rs                |  2 +-
 examples/loading_spinners/src/main.rs    |  2 +-
 examples/pane_grid/src/main.rs           |  2 +-
 examples/pokedex/src/main.rs             |  2 +-
 examples/screenshot/src/main.rs          |  2 +-
 examples/sierpinski_triangle/src/main.rs |  2 +-
 examples/stopwatch/src/main.rs           |  4 ++--
 examples/system_information/src/main.rs  | 36 ++++++++++++++++----------------
 examples/toast/src/main.rs               |  2 +-
 examples/todos/src/main.rs               |  4 ++--
 examples/tour/src/main.rs                |  8 +++----
 examples/vectorial_text/src/main.rs      |  2 +-
 18 files changed, 41 insertions(+), 41 deletions(-)

diff --git a/examples/custom_quad/src/main.rs b/examples/custom_quad/src/main.rs
index c093e240..d8aac1d0 100644
--- a/examples/custom_quad/src/main.rs
+++ b/examples/custom_quad/src/main.rs
@@ -165,7 +165,7 @@ impl Example {
                 self.border_width,
                 self.shadow
             ),
-            text(format!("Radius: {tl:.2}/{tr:.2}/{br:.2}/{bl:.2}")),
+            text!("Radius: {tl:.2}/{tr:.2}/{br:.2}/{bl:.2}"),
             slider(1.0..=100.0, tl, Message::RadiusTopLeftChanged).step(0.01),
             slider(1.0..=100.0, tr, Message::RadiusTopRightChanged).step(0.01),
             slider(1.0..=100.0, br, Message::RadiusBottomRightChanged)
@@ -174,7 +174,7 @@ impl Example {
                 .step(0.01),
             slider(1.0..=10.0, self.border_width, Message::BorderWidthChanged)
                 .step(0.01),
-            text(format!("Shadow: {sx:.2}x{sy:.2}, {sr:.2}")),
+            text!("Shadow: {sx:.2}x{sy:.2}, {sr:.2}"),
             slider(-100.0..=100.0, sx, Message::ShadowXOffsetChanged)
                 .step(0.01),
             slider(-100.0..=100.0, sy, Message::ShadowYOffsetChanged)
diff --git a/examples/custom_widget/src/main.rs b/examples/custom_widget/src/main.rs
index aa49ebd0..0c9e774d 100644
--- a/examples/custom_widget/src/main.rs
+++ b/examples/custom_widget/src/main.rs
@@ -114,7 +114,7 @@ impl Example {
     fn view(&self) -> Element<Message> {
         let content = column![
             circle(self.radius),
-            text(format!("Radius: {:.2}", self.radius)),
+            text!("Radius: {:.2}", self.radius),
             slider(1.0..=100.0, self.radius, Message::RadiusChanged).step(0.01),
         ]
         .padding(20)
diff --git a/examples/download_progress/src/main.rs b/examples/download_progress/src/main.rs
index 9f4769e0..a4136415 100644
--- a/examples/download_progress/src/main.rs
+++ b/examples/download_progress/src/main.rs
@@ -166,7 +166,7 @@ impl Download {
                     .into()
             }
             State::Downloading { .. } => {
-                text(format!("Downloading... {current_progress:.2}%")).into()
+                text!("Downloading... {current_progress:.2}%").into()
             }
             State::Errored => column![
                 "Something went wrong :(",
diff --git a/examples/events/src/main.rs b/examples/events/src/main.rs
index bf568c94..4734e20c 100644
--- a/examples/events/src/main.rs
+++ b/examples/events/src/main.rs
@@ -61,7 +61,7 @@ impl Events {
         let events = Column::with_children(
             self.last
                 .iter()
-                .map(|event| text(format!("{event:?}")).size(40))
+                .map(|event| text!("{event:?}").size(40))
                 .map(Element::from),
         );
 
diff --git a/examples/game_of_life/src/main.rs b/examples/game_of_life/src/main.rs
index 2b0fae0b..48574247 100644
--- a/examples/game_of_life/src/main.rs
+++ b/examples/game_of_life/src/main.rs
@@ -163,7 +163,7 @@ fn view_controls<'a>(
 
     let speed_controls = row![
         slider(1.0..=1000.0, speed as f32, Message::SpeedChanged),
-        text(format!("x{speed}")).size(16),
+        text!("x{speed}").size(16),
     ]
     .align_items(Alignment::Center)
     .spacing(10);
diff --git a/examples/integration/src/controls.rs b/examples/integration/src/controls.rs
index 28050f8a..5359d54f 100644
--- a/examples/integration/src/controls.rs
+++ b/examples/integration/src/controls.rs
@@ -78,7 +78,7 @@ impl Program for Controls {
         container(
             column![
                 text("Background color").color(Color::WHITE),
-                text(format!("{background_color:?}"))
+                text!("{background_color:?}")
                     .size(14)
                     .color(Color::WHITE),
                 text_input("Placeholder", &self.input)
diff --git a/examples/lazy/src/main.rs b/examples/lazy/src/main.rs
index 2d53df93..627aba23 100644
--- a/examples/lazy/src/main.rs
+++ b/examples/lazy/src/main.rs
@@ -192,7 +192,7 @@ impl App {
                 text_input("Add a new option", &self.input)
                     .on_input(Message::InputChanged)
                     .on_submit(Message::AddItem(self.input.clone())),
-                button(text(format!("Toggle Order ({})", self.order)))
+                button(text!("Toggle Order ({})", self.order))
                     .on_press(Message::ToggleOrder)
             ]
             .spacing(10)
diff --git a/examples/loading_spinners/src/main.rs b/examples/loading_spinners/src/main.rs
index eaa4d57e..2b2abad5 100644
--- a/examples/loading_spinners/src/main.rs
+++ b/examples/loading_spinners/src/main.rs
@@ -81,7 +81,7 @@ impl LoadingSpinners {
                         Message::CycleDurationChanged(x / 100.0)
                     })
                     .width(200.0),
-                    text(format!("{:.2}s", self.cycle_duration)),
+                    text!("{:.2}s", self.cycle_duration),
                 ]
                 .align_items(iced::Alignment::Center)
                 .spacing(20.0),
diff --git a/examples/pane_grid/src/main.rs b/examples/pane_grid/src/main.rs
index 829996d8..d4981024 100644
--- a/examples/pane_grid/src/main.rs
+++ b/examples/pane_grid/src/main.rs
@@ -285,7 +285,7 @@ fn view_content<'a>(
     .max_width(160);
 
     let content = column![
-        text(format!("{}x{}", size.width, size.height)).size(24),
+        text!("{}x{}", size.width, size.height).size(24),
         controls,
     ]
     .spacing(10)
diff --git a/examples/pokedex/src/main.rs b/examples/pokedex/src/main.rs
index 0811c08d..61e75116 100644
--- a/examples/pokedex/src/main.rs
+++ b/examples/pokedex/src/main.rs
@@ -109,7 +109,7 @@ impl Pokemon {
             column![
                 row![
                     text(&self.name).size(30).width(Length::Fill),
-                    text(format!("#{}", self.number))
+                    text!("#{}", self.number)
                         .size(20)
                         .color([0.5, 0.5, 0.5]),
                 ]
diff --git a/examples/screenshot/src/main.rs b/examples/screenshot/src/main.rs
index d887c41b..c73d8dfd 100644
--- a/examples/screenshot/src/main.rs
+++ b/examples/screenshot/src/main.rs
@@ -163,7 +163,7 @@ impl Example {
                 .push_maybe(
                     self.crop_error
                         .as_ref()
-                        .map(|error| text(format!("Crop error! \n{error}"))),
+                        .map(|error| text!("Crop error! \n{error}")),
                 )
                 .spacing(10)
                 .align_items(Alignment::Center);
diff --git a/examples/sierpinski_triangle/src/main.rs b/examples/sierpinski_triangle/src/main.rs
index 07ae05d6..b805e7d5 100644
--- a/examples/sierpinski_triangle/src/main.rs
+++ b/examples/sierpinski_triangle/src/main.rs
@@ -54,7 +54,7 @@ impl SierpinskiEmulator {
                 .width(Length::Fill)
                 .height(Length::Fill),
             row![
-                text(format!("Iteration: {:?}", self.graph.iteration)),
+                text!("Iteration: {:?}", self.graph.iteration),
                 slider(0..=10000, self.graph.iteration, Message::IterationSet)
             ]
             .padding(10)
diff --git a/examples/stopwatch/src/main.rs b/examples/stopwatch/src/main.rs
index b9eb19cf..6bd5ce3e 100644
--- a/examples/stopwatch/src/main.rs
+++ b/examples/stopwatch/src/main.rs
@@ -92,13 +92,13 @@ impl Stopwatch {
 
         let seconds = self.duration.as_secs();
 
-        let duration = text(format!(
+        let duration = text!(
             "{:0>2}:{:0>2}:{:0>2}.{:0>2}",
             seconds / HOUR,
             (seconds % HOUR) / MINUTE,
             seconds % MINUTE,
             self.duration.subsec_millis() / 10,
-        ))
+        )
         .size(40);
 
         let button = |label| {
diff --git a/examples/system_information/src/main.rs b/examples/system_information/src/main.rs
index a6ac27a6..cd4d9cb3 100644
--- a/examples/system_information/src/main.rs
+++ b/examples/system_information/src/main.rs
@@ -45,56 +45,56 @@ impl Example {
         let content: Element<_> = match self {
             Example::Loading => text("Loading...").size(40).into(),
             Example::Loaded { information } => {
-                let system_name = text(format!(
+                let system_name = text!(
                     "System name: {}",
                     information
                         .system_name
                         .as_ref()
                         .unwrap_or(&"unknown".to_string())
-                ));
+                );
 
-                let system_kernel = text(format!(
+                let system_kernel = text!(
                     "System kernel: {}",
                     information
                         .system_kernel
                         .as_ref()
                         .unwrap_or(&"unknown".to_string())
-                ));
+                );
 
-                let system_version = text(format!(
+                let system_version = text!(
                     "System version: {}",
                     information
                         .system_version
                         .as_ref()
                         .unwrap_or(&"unknown".to_string())
-                ));
+                );
 
-                let system_short_version = text(format!(
+                let system_short_version = text!(
                     "System short version: {}",
                     information
                         .system_short_version
                         .as_ref()
                         .unwrap_or(&"unknown".to_string())
-                ));
+                );
 
                 let cpu_brand =
-                    text(format!("Processor brand: {}", information.cpu_brand));
+                    text!("Processor brand: {}", information.cpu_brand);
 
-                let cpu_cores = text(format!(
+                let cpu_cores = text!(
                     "Processor cores: {}",
                     information
                         .cpu_cores
                         .map_or("unknown".to_string(), |cores| cores
                             .to_string())
-                ));
+                );
 
                 let memory_readable =
                     ByteSize::b(information.memory_total).to_string();
 
-                let memory_total = text(format!(
+                let memory_total = text!(
                     "Memory (total): {} bytes ({memory_readable})",
                     information.memory_total,
-                ));
+                );
 
                 let memory_text = if let Some(memory_used) =
                     information.memory_used
@@ -106,17 +106,17 @@ impl Example {
                     String::from("None")
                 };
 
-                let memory_used = text(format!("Memory (used): {memory_text}"));
+                let memory_used = text!("Memory (used): {memory_text}");
 
-                let graphics_adapter = text(format!(
+                let graphics_adapter = text!(
                     "Graphics adapter: {}",
                     information.graphics_adapter
-                ));
+                );
 
-                let graphics_backend = text(format!(
+                let graphics_backend = text!(
                     "Graphics backend: {}",
                     information.graphics_backend
-                ));
+                );
 
                 column![
                     system_name.size(30),
diff --git a/examples/toast/src/main.rs b/examples/toast/src/main.rs
index fdae1dc1..4916ceb6 100644
--- a/examples/toast/src/main.rs
+++ b/examples/toast/src/main.rs
@@ -131,7 +131,7 @@ impl App {
                 subtitle(
                     "Timeout",
                     row![
-                        text(format!("{:0>2} sec", self.timeout_secs)),
+                        text!("{:0>2} sec", self.timeout_secs),
                         slider(
                             1.0..=30.0,
                             self.timeout_secs as f64,
diff --git a/examples/todos/src/main.rs b/examples/todos/src/main.rs
index 7768c1d5..f5fb94c9 100644
--- a/examples/todos/src/main.rs
+++ b/examples/todos/src/main.rs
@@ -396,10 +396,10 @@ fn view_controls(tasks: &[Task], current_filter: Filter) -> Element<Message> {
     };
 
     row![
-        text(format!(
+        text!(
             "{tasks_left} {} left",
             if tasks_left == 1 { "task" } else { "tasks" }
-        ))
+        )
         .width(Length::Fill),
         row![
             filter_button("All", Filter::All, current_filter),
diff --git a/examples/tour/src/main.rs b/examples/tour/src/main.rs
index a88c0dba..3fb8b460 100644
--- a/examples/tour/src/main.rs
+++ b/examples/tour/src/main.rs
@@ -433,7 +433,7 @@ impl<'a> Step {
 
         let spacing_section = column![
             slider(0..=80, spacing, StepMessage::SpacingChanged),
-            text(format!("{spacing} px"))
+            text!("{spacing} px")
                 .width(Length::Fill)
                 .horizontal_alignment(alignment::Horizontal::Center),
         ]
@@ -457,7 +457,7 @@ impl<'a> Step {
     fn text(size: u16, color: Color) -> Column<'a, StepMessage> {
         let size_section = column![
             "You can change its size:",
-            text(format!("This text is {size} pixels")).size(size),
+            text!("This text is {size} pixels").size(size),
             slider(10..=70, size, StepMessage::TextSizeChanged),
         ]
         .padding(20)
@@ -472,7 +472,7 @@ impl<'a> Step {
 
         let color_section = column![
             "And its color:",
-            text(format!("{color:?}")).color(color),
+            text!("{color:?}").color(color),
             color_sliders,
         ]
         .padding(20)
@@ -544,7 +544,7 @@ impl<'a> Step {
             .push(ferris(width, filter_method))
             .push(slider(100..=500, width, StepMessage::ImageWidthChanged))
             .push(
-                text(format!("Width: {width} px"))
+                text!("Width: {width} px")
                     .width(Length::Fill)
                     .horizontal_alignment(alignment::Horizontal::Center),
             )
diff --git a/examples/vectorial_text/src/main.rs b/examples/vectorial_text/src/main.rs
index a7391e23..91740a37 100644
--- a/examples/vectorial_text/src/main.rs
+++ b/examples/vectorial_text/src/main.rs
@@ -55,7 +55,7 @@ impl VectorialText {
                 row![
                     text(label),
                     horizontal_space(),
-                    text(format!("{:.2}", value))
+                    text!("{:.2}", value)
                 ],
                 slider(range, value, message).step(0.01)
             ]
-- 
cgit 


From db7d8680ce198439921c8856b2d6d0ccfa4d66ff Mon Sep 17 00:00:00 2001
From: Richard Custodio <richardcustodio@pm.me>
Date: Mon, 18 Mar 2024 17:46:22 -0300
Subject: docs: improve `text` macro documentation

---
 widget/src/helpers.rs | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/widget/src/helpers.rs b/widget/src/helpers.rs
index 1b57cd21..966d23cc 100644
--- a/widget/src/helpers.rs
+++ b/widget/src/helpers.rs
@@ -54,6 +54,23 @@ macro_rules! row {
 /// Creates a new [`Text`] widget with the provided content.
 ///
 /// [`Text`]: core::widget::Text
+///
+/// This macro uses the same syntax as [`format!`], but creates a new [`Text`] widget instead.
+///
+/// See [the formatting documentation in `std::fmt`](std::fmt)
+/// for details of the macro argument syntax.
+///
+/// # Examples
+///
+/// ```
+/// fn view(&self) -> Element<Message> {
+///     let empty = text!();
+///     let simple = text!("Hello, world!");
+///     let keyword = text!("Hello, {}", "world!");
+///     let planet = "Earth";
+///     let complex = text!("Hello, {planet}!");
+/// }
+/// ```
 #[macro_export]
 macro_rules! text {
     () => (
-- 
cgit 


From 8ed62541af8cd16760b59d8f0a49d619d78f592e Mon Sep 17 00:00:00 2001
From: Richard Custodio <richardcustodio@pm.me>
Date: Mon, 18 Mar 2024 18:24:57 -0300
Subject: fix: run `cargo fmt`

---
 examples/integration/src/controls.rs    |  4 +---
 examples/pane_grid/src/main.rs          | 10 ++++------
 examples/pokedex/src/main.rs            |  4 +---
 examples/system_information/src/main.rs | 12 ++++--------
 examples/vectorial_text/src/main.rs     |  6 +-----
 5 files changed, 11 insertions(+), 25 deletions(-)

diff --git a/examples/integration/src/controls.rs b/examples/integration/src/controls.rs
index 5359d54f..1958b2f3 100644
--- a/examples/integration/src/controls.rs
+++ b/examples/integration/src/controls.rs
@@ -78,9 +78,7 @@ impl Program for Controls {
         container(
             column![
                 text("Background color").color(Color::WHITE),
-                text!("{background_color:?}")
-                    .size(14)
-                    .color(Color::WHITE),
+                text!("{background_color:?}").size(14).color(Color::WHITE),
                 text_input("Placeholder", &self.input)
                     .on_input(Message::InputChanged),
                 sliders,
diff --git a/examples/pane_grid/src/main.rs b/examples/pane_grid/src/main.rs
index d4981024..9e78ad0b 100644
--- a/examples/pane_grid/src/main.rs
+++ b/examples/pane_grid/src/main.rs
@@ -284,12 +284,10 @@ fn view_content<'a>(
     .spacing(5)
     .max_width(160);
 
-    let content = column![
-        text!("{}x{}", size.width, size.height).size(24),
-        controls,
-    ]
-    .spacing(10)
-    .align_items(Alignment::Center);
+    let content =
+        column![text!("{}x{}", size.width, size.height).size(24), controls,]
+            .spacing(10)
+            .align_items(Alignment::Center);
 
     container(scrollable(content))
         .width(Length::Fill)
diff --git a/examples/pokedex/src/main.rs b/examples/pokedex/src/main.rs
index 61e75116..6ba6fe66 100644
--- a/examples/pokedex/src/main.rs
+++ b/examples/pokedex/src/main.rs
@@ -109,9 +109,7 @@ impl Pokemon {
             column![
                 row![
                     text(&self.name).size(30).width(Length::Fill),
-                    text!("#{}", self.number)
-                        .size(20)
-                        .color([0.5, 0.5, 0.5]),
+                    text!("#{}", self.number).size(20).color([0.5, 0.5, 0.5]),
                 ]
                 .align_items(Alignment::Center)
                 .spacing(20),
diff --git a/examples/system_information/src/main.rs b/examples/system_information/src/main.rs
index cd4d9cb3..cae764dc 100644
--- a/examples/system_information/src/main.rs
+++ b/examples/system_information/src/main.rs
@@ -108,15 +108,11 @@ impl Example {
 
                 let memory_used = text!("Memory (used): {memory_text}");
 
-                let graphics_adapter = text!(
-                    "Graphics adapter: {}",
-                    information.graphics_adapter
-                );
+                let graphics_adapter =
+                    text!("Graphics adapter: {}", information.graphics_adapter);
 
-                let graphics_backend = text!(
-                    "Graphics backend: {}",
-                    information.graphics_backend
-                );
+                let graphics_backend =
+                    text!("Graphics backend: {}", information.graphics_backend);
 
                 column![
                     system_name.size(30),
diff --git a/examples/vectorial_text/src/main.rs b/examples/vectorial_text/src/main.rs
index 91740a37..1ed7a2b1 100644
--- a/examples/vectorial_text/src/main.rs
+++ b/examples/vectorial_text/src/main.rs
@@ -52,11 +52,7 @@ impl VectorialText {
     fn view(&self) -> Element<Message> {
         let slider_with_label = |label, range, value, message: fn(f32) -> _| {
             column![
-                row![
-                    text(label),
-                    horizontal_space(),
-                    text!("{:.2}", value)
-                ],
+                row![text(label), horizontal_space(), text!("{:.2}", value)],
                 slider(range, value, message).step(0.01)
             ]
             .spacing(2)
-- 
cgit 


From d71e78d1384c885be1ceba6e1f5c871174ca9c74 Mon Sep 17 00:00:00 2001
From: Richard Custodio <richardcustodio@pm.me>
Date: Mon, 18 Mar 2024 18:30:29 -0300
Subject: fix: remove empty macro usage

---
 widget/src/helpers.rs | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/widget/src/helpers.rs b/widget/src/helpers.rs
index 966d23cc..5eea7cc2 100644
--- a/widget/src/helpers.rs
+++ b/widget/src/helpers.rs
@@ -64,18 +64,17 @@ macro_rules! row {
 ///
 /// ```
 /// fn view(&self) -> Element<Message> {
-///     let empty = text!();
 ///     let simple = text!("Hello, world!");
+///
 ///     let keyword = text!("Hello, {}", "world!");
+///
 ///     let planet = "Earth";
-///     let complex = text!("Hello, {planet}!");
+///     let local_variable = text!("Hello, {planet}!");
+///     // ...
 /// }
 /// ```
 #[macro_export]
 macro_rules! text {
-    () => (
-        $crate::Text::new()
-    );
     ($($arg:tt)*) => {
         $crate::Text::new(format!($($arg)*))
     };
-- 
cgit 


From 72ed8bcc8def9956e25f3720a3095fc96bb2eef0 Mon Sep 17 00:00:00 2001
From: Richard Custodio <richardcustodio@pm.me>
Date: Mon, 18 Mar 2024 20:24:42 -0300
Subject: fix: make `text` macro example pass doctest

---
 widget/src/helpers.rs | 35 ++++++++++++++++++++++++++---------
 1 file changed, 26 insertions(+), 9 deletions(-)

diff --git a/widget/src/helpers.rs b/widget/src/helpers.rs
index 5eea7cc2..b294a1d4 100644
--- a/widget/src/helpers.rs
+++ b/widget/src/helpers.rs
@@ -62,15 +62,32 @@ macro_rules! row {
 ///
 /// # Examples
 ///
-/// ```
-/// fn view(&self) -> Element<Message> {
-///     let simple = text!("Hello, world!");
-///
-///     let keyword = text!("Hello, {}", "world!");
-///
-///     let planet = "Earth";
-///     let local_variable = text!("Hello, {planet}!");
-///     // ...
+/// ```no_run
+/// # mod iced {
+/// #     pub struct Element<Message>(pub std::marker::PhantomData<Message>);
+/// #     pub mod widget {
+/// #         macro_rules! text {
+/// #           ($($arg:tt)*) => {unimplemented!()}
+/// #         }
+/// #         pub(crate) use text;
+/// #     }
+/// # }
+/// # struct Example;
+/// # enum Message {}
+/// use iced::Element;
+/// use iced::widget::text;
+///
+/// impl Example {
+///     fn view(&self) -> Element<Message> {
+///         let simple = text!("Hello, world!");
+///
+///         let keyword = text!("Hello, {}", "world!");
+///
+///         let planet = "Earth";
+///         let local_variable = text!("Hello, {planet}!");
+///         // ...
+///         # iced::Element(std::marker::PhantomData)
+///     }
 /// }
 /// ```
 #[macro_export]
-- 
cgit