Fix unsafety: call `MaybeUninit::zeroed()` instead of `uninit()`.

PiperOrigin-RevId: 419711437
diff --git a/rs_bindings_from_cc/src_code_gen.rs b/rs_bindings_from_cc/src_code_gen.rs
index 0bb047c..af60b47 100644
--- a/rs_bindings_from_cc/src_code_gen.rs
+++ b/rs_bindings_from_cc/src_code_gen.rs
@@ -283,14 +283,21 @@
                 param_idents.iter().skip(1).collect_vec(),
                 param_types.iter().skip(1).collect_vec(),
             );
-
+            // SAFETY: A user-defined constructor is not guaranteed to
+            // initialize all the fields. To make the `assume_init()` call
+            // below safe, the memory is zero-initialized first. This is safer,
+            // because zero-initialized memory represents a valid value for the
+            // currently supported field types (this may change once the
+            // bindings generator starts supporting reference fields).
+            // TODO(b/213243309): Double-check if zero-initialization is
+            // desirable here.
             let struct_name = make_ident(&record.identifier.identifier);
             quote! {
                 #doc_comment
                 impl #trait_name for #struct_name {
                     #[inline(always)]
                     fn #method_name #generic_params( #( #param_idents: #param_types ),* ) -> Self {
-                        let mut tmp = std::mem::MaybeUninit::<Self>::uninit();
+                        let mut tmp = std::mem::MaybeUninit::<Self>::zeroed();
                         unsafe {
                             crate::detail::#thunk_ident(tmp.as_mut_ptr() #( , #param_idents )* );
                             tmp.assume_init()
@@ -1323,7 +1330,7 @@
                 impl Default for DefaultedConstructor {
                     #[inline(always)]
                     fn default() -> Self {
-                        let mut tmp = std::mem::MaybeUninit::<Self>::uninit();
+                        let mut tmp = std::mem::MaybeUninit::<Self>::zeroed();
                         unsafe {
                             crate::detail::__rust_thunk___ZN20DefaultedConstructorC1Ev(
                                 tmp.as_mut_ptr());