diff --git a/crates/c-api/src/vec.rs b/crates/c-api/src/vec.rs index 1b45aeff22..9091fa7e20 100644 --- a/crates/c-api/src/vec.rs +++ b/crates/c-api/src/vec.rs @@ -29,7 +29,6 @@ macro_rules! declare_vecs { ))* ) => {$( #[repr(C)] - #[derive(Clone)] pub struct $name { size: usize, data: *mut $elem_ty, @@ -80,6 +79,12 @@ macro_rules! declare_vecs { } } + impl Clone for $name { + fn clone(&self) -> Self { + self.as_slice().to_vec().into() + } + } + impl From> for $name { fn from(vec: Vec<$elem_ty>) -> Self { let mut vec = vec.into_boxed_slice();