diff --git a/crates/wit/src/parsed_type/vector_ser_der.rs b/crates/wit/src/parsed_type/vector_ser_der.rs index f1cbe2f..9d0de05 100644 --- a/crates/wit/src/parsed_type/vector_ser_der.rs +++ b/crates/wit/src/parsed_type/vector_ser_der.rs @@ -28,8 +28,14 @@ pub(crate) fn generate_vector_ser( arg_name: &str, ) -> proc_macro2::TokenStream { let values_ser = match value_ty { - ParsedType::Boolean(_) - | ParsedType::I8(_) + ParsedType::Boolean(_) => { + quote! { + let converted_bool_vector: Vec = arg.into_iter().map(|v| v as u8).collect::<_>(); + fluence::internal::add_object_to_release(Box::new(converted_bool_vector)); + (converted_bool_vector.as_ptr() as _, converted_bool_vector.len() as _) + } + }, + ParsedType::I8(_) | ParsedType::U8(_) | ParsedType::I16(_) | ParsedType::U16(_)