diff --git a/packages/native-core-macro/src/lib.rs b/packages/native-core-macro/src/lib.rs index 51a8464bc..22532d144 100644 --- a/packages/native-core-macro/src/lib.rs +++ b/packages/native-core-macro/src/lib.rs @@ -35,35 +35,6 @@ fn impl_derive_macro(ast: &syn::DeriveInput) -> TokenStream { _ => unimplemented!(), }; - let clone_or_default = fields.iter().map(|field| { - let field_name = field.ident.as_ref().unwrap(); - let skip_clone = field - .attrs - .iter() - .any(|attr| attr.path.is_ident("skip_clone")); - if skip_clone { - quote! { - Default::default() - } - } else { - quote! { - self.#field_name.clone() - } - } - }); - - let non_clone_types = fields - .iter() - .filter(|field| { - field - .attrs - .iter() - .any(|attr| attr.path.is_ident("skip_clone")) - }) - .map(|field| &field.ty); - - let names = fields.iter().map(|field| field.ident.as_ref().unwrap()); - let types = fields .iter() .filter(|field| !field.attrs.iter().any(|attr| attr.path.is_ident("skip"))) @@ -78,22 +49,6 @@ fn impl_derive_macro(ast: &syn::DeriveInput) -> TokenStream { ),* ]) } - - fn clone_or_default(&self) -> Self { - Self { - #( - #names: #clone_or_default - ),* - } - } - - fn non_clone_members() -> Box<[std::any::TypeId]> { - Box::new([ - #( - std::any::TypeId::of::<#non_clone_types>() - ),* - ]) - } } }; diff --git a/packages/native-core/src/real_dom.rs b/packages/native-core/src/real_dom.rs index 82a1c4e14..39a40d95f 100644 --- a/packages/native-core/src/real_dom.rs +++ b/packages/native-core/src/real_dom.rs @@ -452,7 +452,7 @@ impl RealDom { fn clone_node(&mut self, node_id: NodeId) -> NodeId { let node = self.tree.get(node_id).unwrap(); let new_node = Node { - state: node.state.clone_or_default(), + state: node.state.clone(), node_data: node.node_data.clone(), }; let new_id = self.create_node(new_node, true); diff --git a/packages/native-core/src/state.rs b/packages/native-core/src/state.rs index a284bbdc4..ef4155e40 100644 --- a/packages/native-core/src/state.rs +++ b/packages/native-core/src/state.rs @@ -1,5 +1,4 @@ use crate::passes::{AnyMapLike, TypeErasedPass}; -use std::any::TypeId; use std::cmp::Ordering; /// Join two sorted iterators @@ -41,14 +40,4 @@ pub(crate) fn union_ordered_iter<'a>( pub trait State: Default + Clone + AnyMapLike + 'static { #[doc(hidden)] fn create_passes() -> Box<[TypeErasedPass]>; - - #[doc(hidden)] - fn clone_or_default(&self) -> Self { - self.clone() - } - - #[doc(hidden)] - fn non_clone_members() -> Box<[TypeId]> { - Box::new([]) - } } diff --git a/packages/tui/src/node.rs b/packages/tui/src/node.rs index 759424d62..8dc418b24 100644 --- a/packages/tui/src/node.rs +++ b/packages/tui/src/node.rs @@ -9,7 +9,6 @@ pub(crate) type TuiNode = dioxus_native_core::node::Node; #[derive(Debug, Clone, State, AnyMapLike, Default)] pub(crate) struct NodeState { - #[skip_clone] pub layout: TaffyLayout, pub style: StyleModifier, pub prevent_default: PreventDefault, @@ -59,12 +58,12 @@ impl Pass for PreventDefault { fn pass<'a>( &mut self, node_view: dioxus_native_core::node_ref::NodeView, - node: ::ElementBorrowed<'a>, - parent: Option<::ElementBorrowed<'a>>, - children: Option< + _: ::ElementBorrowed<'a>, + _: Option<::ElementBorrowed<'a>>, + _: Option< impl Iterator::ElementBorrowed<'a>>, >, - context: &SendAnyMap, + _: &SendAnyMap, ) -> bool { let new = match node_view.attributes().and_then(|mut attrs| { attrs