From 81e0469cc2195d3546555834601f0b829d3fda12 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Tue, 12 Mar 2024 15:15:24 -0500 Subject: [PATCH 1/2] implement copy for Resource --- packages/hooks/src/use_resource.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/hooks/src/use_resource.rs b/packages/hooks/src/use_resource.rs index a4157fbba..80a27c5e9 100644 --- a/packages/hooks/src/use_resource.rs +++ b/packages/hooks/src/use_resource.rs @@ -107,6 +107,13 @@ pub struct Resource { callback: UseCallback, } +impl Clone for Resource { + fn clone(&self) -> Self { + *self + } +} +impl Copy for Resource {} + /// A signal that represents the state of the resource // we might add more states (panicked, etc) #[derive(Clone, Copy, PartialEq, Hash, Eq, Debug)] From b2607a5b35b1e8e12c62489e94d3d7cd5449c1a4 Mon Sep 17 00:00:00 2001 From: Evan Almloff Date: Tue, 12 Mar 2024 15:15:36 -0500 Subject: [PATCH 2/2] Fix temporary reads within rsx --- packages/rsx/src/lib.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/rsx/src/lib.rs b/packages/rsx/src/lib.rs index 3d689dda0..f266aa2d7 100644 --- a/packages/rsx/src/lib.rs +++ b/packages/rsx/src/lib.rs @@ -244,12 +244,16 @@ impl<'a> ToTokens for TemplateRenderer<'a> { attr_paths: &[ #(#attr_paths),* ], }; - dioxus_core::VNode::new( - #key_tokens, - TEMPLATE, - Box::new([ #( #node_printer),* ]), - Box::new([ #(#dyn_attr_printer),* ]), - ) + { + // NOTE: Allocating a temporary is important to make reads within rsx drop before the value is returned + let __vnodes = dioxus_core::VNode::new( + #key_tokens, + TEMPLATE, + Box::new([ #( #node_printer),* ]), + Box::new([ #(#dyn_attr_printer),* ]), + ); + __vnodes + } }); } }