From 0220020f4f9b3ab9c2ee04bce4da6210b14058f6 Mon Sep 17 00:00:00 2001 From: Manuel Cillero Date: Sat, 23 Apr 2022 21:55:37 +0200 Subject: [PATCH] =?UTF-8?q?A=C3=B1ade=20funci=C3=B3n=20as=5Fany()=20en=20c?= =?UTF-8?q?omponentes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pagetop/src/base/component/block.rs | 4 ++++ pagetop/src/base/component/chunck.rs | 4 ++++ pagetop/src/base/component/container.rs | 4 ++++ pagetop/src/base/component/form/button.rs | 4 ++++ pagetop/src/base/component/form/date.rs | 4 ++++ pagetop/src/base/component/form/form.rs | 4 ++++ pagetop/src/base/component/form/hidden.rs | 4 ++++ pagetop/src/base/component/form/input.rs | 4 ++++ pagetop/src/base/component/grid/column.rs | 4 ++++ pagetop/src/base/component/grid/row.rs | 4 ++++ pagetop/src/base/component/image.rs | 4 ++++ pagetop/src/base/component/menu.rs | 8 ++++++++ pagetop/src/response/page/component.rs | 2 ++ pagetop/src/theme/definition.rs | 4 ++-- 14 files changed, 56 insertions(+), 2 deletions(-) diff --git a/pagetop/src/base/component/block.rs b/pagetop/src/base/component/block.rs index 697c9344..e75981cd 100644 --- a/pagetop/src/base/component/block.rs +++ b/pagetop/src/base/component/block.rs @@ -46,6 +46,10 @@ impl PageComponent for Block { } } + fn as_any(&mut self) -> &dyn AnyComponent { + self + } + fn as_mut_any(&mut self) -> &mut dyn AnyComponent { self } diff --git a/pagetop/src/base/component/chunck.rs b/pagetop/src/base/component/chunck.rs index 2957671e..9476e9d8 100644 --- a/pagetop/src/base/component/chunck.rs +++ b/pagetop/src/base/component/chunck.rs @@ -29,6 +29,10 @@ impl PageComponent for Chunck { html! { (*self.html()) } } + fn as_any(&mut self) -> &dyn AnyComponent { + self + } + fn as_mut_any(&mut self) -> &mut dyn AnyComponent { self } diff --git a/pagetop/src/base/component/container.rs b/pagetop/src/base/component/container.rs index e4e9589c..553d1bae 100644 --- a/pagetop/src/base/component/container.rs +++ b/pagetop/src/base/component/container.rs @@ -73,6 +73,10 @@ impl PageComponent for Container { } } + fn as_any(&mut self) -> &dyn AnyComponent { + self + } + fn as_mut_any(&mut self) -> &mut dyn AnyComponent { self } diff --git a/pagetop/src/base/component/form/button.rs b/pagetop/src/base/component/form/button.rs index e098ea71..f6926233 100644 --- a/pagetop/src/base/component/form/button.rs +++ b/pagetop/src/base/component/form/button.rs @@ -66,6 +66,10 @@ impl PageComponent for Button { } } + fn as_any(&mut self) -> &dyn AnyComponent { + self + } + fn as_mut_any(&mut self) -> &mut dyn AnyComponent { self } diff --git a/pagetop/src/base/component/form/date.rs b/pagetop/src/base/component/form/date.rs index bb7e0618..0aa77a93 100644 --- a/pagetop/src/base/component/form/date.rs +++ b/pagetop/src/base/component/form/date.rs @@ -85,6 +85,10 @@ impl PageComponent for Date { } } + fn as_any(&mut self) -> &dyn AnyComponent { + self + } + fn as_mut_any(&mut self) -> &mut dyn AnyComponent { self } diff --git a/pagetop/src/base/component/form/form.rs b/pagetop/src/base/component/form/form.rs index 1ff77394..5d41d4bc 100644 --- a/pagetop/src/base/component/form/form.rs +++ b/pagetop/src/base/component/form/form.rs @@ -55,6 +55,10 @@ impl PageComponent for Form { } } + fn as_any(&mut self) -> &dyn AnyComponent { + self + } + fn as_mut_any(&mut self) -> &mut dyn AnyComponent { self } diff --git a/pagetop/src/base/component/form/hidden.rs b/pagetop/src/base/component/form/hidden.rs index 24d70cb2..a9ccbd47 100644 --- a/pagetop/src/base/component/form/hidden.rs +++ b/pagetop/src/base/component/form/hidden.rs @@ -29,6 +29,10 @@ impl PageComponent for Hidden { } } + fn as_any(&mut self) -> &dyn AnyComponent { + self + } + fn as_mut_any(&mut self) -> &mut dyn AnyComponent { self } diff --git a/pagetop/src/base/component/form/input.rs b/pagetop/src/base/component/form/input.rs index 35a38e73..0bb5502d 100644 --- a/pagetop/src/base/component/form/input.rs +++ b/pagetop/src/base/component/form/input.rs @@ -113,6 +113,10 @@ impl PageComponent for Input { } } + fn as_any(&mut self) -> &dyn AnyComponent { + self + } + fn as_mut_any(&mut self) -> &mut dyn AnyComponent { self } diff --git a/pagetop/src/base/component/grid/column.rs b/pagetop/src/base/component/grid/column.rs index 56dc2345..0e017f14 100644 --- a/pagetop/src/base/component/grid/column.rs +++ b/pagetop/src/base/component/grid/column.rs @@ -41,6 +41,10 @@ impl PageComponent for Column { } } + fn as_any(&mut self) -> &dyn AnyComponent { + self + } + fn as_mut_any(&mut self) -> &mut dyn AnyComponent { self } diff --git a/pagetop/src/base/component/grid/row.rs b/pagetop/src/base/component/grid/row.rs index 31739359..9e48d34e 100644 --- a/pagetop/src/base/component/grid/row.rs +++ b/pagetop/src/base/component/grid/row.rs @@ -41,6 +41,10 @@ impl PageComponent for Row { } } + fn as_any(&mut self) -> &dyn AnyComponent { + self + } + fn as_mut_any(&mut self) -> &mut dyn AnyComponent { self } diff --git a/pagetop/src/base/component/image.rs b/pagetop/src/base/component/image.rs index abafcdbf..d2fc2caf 100644 --- a/pagetop/src/base/component/image.rs +++ b/pagetop/src/base/component/image.rs @@ -38,6 +38,10 @@ impl PageComponent for Image { } } + fn as_any(&mut self) -> &dyn AnyComponent { + self + } + fn as_mut_any(&mut self) -> &mut dyn AnyComponent { self } diff --git a/pagetop/src/base/component/menu.rs b/pagetop/src/base/component/menu.rs index b9461ed2..2ca9be57 100644 --- a/pagetop/src/base/component/menu.rs +++ b/pagetop/src/base/component/menu.rs @@ -68,6 +68,10 @@ impl PageComponent for MenuItem { } } + fn as_any(&mut self) -> &dyn AnyComponent { + self + } + fn as_mut_any(&mut self) -> &mut dyn AnyComponent { self } @@ -222,6 +226,10 @@ impl PageComponent for Menu { } } + fn as_any(&mut self) -> &dyn AnyComponent { + self + } + fn as_mut_any(&mut self) -> &mut dyn AnyComponent { self } diff --git a/pagetop/src/response/page/component.rs b/pagetop/src/response/page/component.rs index 9e731e47..fb57f2ef 100644 --- a/pagetop/src/response/page/component.rs +++ b/pagetop/src/response/page/component.rs @@ -42,5 +42,7 @@ pub trait PageComponent: AnyComponent + Send + Sync { html! {} } + fn as_any(&mut self) -> &dyn AnyComponent; + fn as_mut_any(&mut self) -> &mut dyn AnyComponent; } diff --git a/pagetop/src/theme/definition.rs b/pagetop/src/theme/definition.rs index 983bf0a6..29b20d4c 100644 --- a/pagetop/src/theme/definition.rs +++ b/pagetop/src/theme/definition.rs @@ -85,7 +85,7 @@ pub trait ThemeTrait: Send + Sync { match component.name() { "Block" => { - let block = component.downcast_mut::().unwrap(); + let block = component.as_mut_any().downcast_mut::().unwrap(); block.alter_title("New title"); }, _ => {}, @@ -105,7 +105,7 @@ pub trait ThemeTrait: Send + Sync { match component.name() { "Block" => { - let block = component.downcast_ref::().unwrap(); + let block = component.as_any().downcast_ref::().unwrap(); match block.template() { "default" => Some(block_default(block)), _ => None,