Implement copy for Resource
@@ -119,6 +119,13 @@ pub struct Resource<T: 'static> {
callback: UseCallback<Task>,
}
+impl<T> Clone for Resource<T> {
+ fn clone(&self) -> Self {
+ *self
+ }
+}
+impl<T> Copy for Resource<T> {}
+
/// A signal that represents the state of the resource
// we might add more states (panicked, etc)
#[derive(Clone, Copy, PartialEq, Hash, Eq, Debug)]
@@ -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
});