libbinder_rs: Remove Vec<MaybeUninit<T>> from parcelable.rs

Vec<MaybeUninit<T>> leaks elements if it was partially initialized
and we got an error. Replace it with a safer Vec<UninitType<T>> which
uses either Default or Option::None to initialize elements.

Bug: 278648274
Test: atest atest_integration_test
Change-Id: I2ec97a17b215cb875a48e894eb04832e8a967fca
diff --git a/libs/binder/rust/src/binder.rs b/libs/binder/rust/src/binder.rs
index d0e35de..b90b40b 100644
--- a/libs/binder/rust/src/binder.rs
+++ b/libs/binder/rust/src/binder.rs
@@ -1122,6 +1122,10 @@
         }
 
         impl $crate::binder_impl::Deserialize for $enum {
+            type UninitType = Self;
+            fn uninit() -> Self::UninitType { Self::UninitType::default() }
+            fn from_init(value: Self) -> Self::UninitType { value }
+
             fn deserialize(parcel: &$crate::binder_impl::BorrowedParcel<'_>) -> std::result::Result<Self, $crate::StatusCode> {
                 parcel.read().map(Self)
             }