diff options
| author | 2021-10-16 03:39:59 +0900 | |
|---|---|---|
| committer | 2021-10-16 03:39:59 +0900 | |
| commit | 7dcc56f291be627ddc84c8f5aac0f158342e4529 (patch) | |
| tree | 483100f34a11f7226c9f6503258db3be9ad05a65 | |
| parent | 9e0b56a2cddba12457699f5d8baaeb97292c6b71 (diff) | |
libbinder_rs: (De)SerializeArray for Option<T>
To support read/write nullable array of parcelables, for
T:(De)SerializeOption, provide (De)SerializeArray as well.
Bug: n/a
Test: aidl_integration_test
Change-Id: I8c7e6de79a92fa9868335202837d14b138cdeb6d
| -rw-r--r-- | libs/binder/rust/src/parcel/file_descriptor.rs | 4 | ||||
| -rw-r--r-- | libs/binder/rust/src/parcel/parcelable.rs | 7 | ||||
| -rw-r--r-- | libs/binder/rust/src/proxy.rs | 3 |
3 files changed, 3 insertions, 11 deletions
diff --git a/libs/binder/rust/src/parcel/file_descriptor.rs b/libs/binder/rust/src/parcel/file_descriptor.rs index f71a686959..8bcc5d0092 100644 --- a/libs/binder/rust/src/parcel/file_descriptor.rs +++ b/libs/binder/rust/src/parcel/file_descriptor.rs @@ -94,8 +94,6 @@ impl SerializeOption for ParcelFileDescriptor { } } -impl SerializeArray for Option<ParcelFileDescriptor> {} - impl DeserializeOption for ParcelFileDescriptor { fn deserialize_option(parcel: &Parcel) -> Result<Option<Self>> { let mut fd = -1i32; @@ -126,8 +124,6 @@ impl DeserializeOption for ParcelFileDescriptor { } } -impl DeserializeArray for Option<ParcelFileDescriptor> {} - impl Deserialize for ParcelFileDescriptor { fn deserialize(parcel: &Parcel) -> Result<Self> { Deserialize::deserialize(parcel) diff --git a/libs/binder/rust/src/parcel/parcelable.rs b/libs/binder/rust/src/parcel/parcelable.rs index 499ef09e6a..ec00e1dc86 100644 --- a/libs/binder/rust/src/parcel/parcelable.rs +++ b/libs/binder/rust/src/parcel/parcelable.rs @@ -383,6 +383,9 @@ macro_rules! impl_parcelable { }; } +impl<T: DeserializeOption> DeserializeArray for Option<T> {} +impl<T: SerializeOption> SerializeArray for Option<T> {} + parcelable_primitives! { impl Serialize for bool = sys::AParcel_writeBool; impl Deserialize for bool = sys::AParcel_readBool; @@ -537,8 +540,6 @@ impl SerializeOption for str { } } -impl SerializeArray for Option<&str> {} - impl Serialize for str { fn serialize(&self, parcel: &mut Parcel) -> Result<()> { Some(self).serialize(parcel) @@ -561,8 +562,6 @@ impl SerializeOption for String { } } -impl SerializeArray for Option<String> {} - impl Deserialize for Option<String> { fn deserialize(parcel: &Parcel) -> Result<Self> { let mut vec: Option<Vec<u8>> = None; diff --git a/libs/binder/rust/src/proxy.rs b/libs/binder/rust/src/proxy.rs index 6a4af077c5..2c5b0a8421 100644 --- a/libs/binder/rust/src/proxy.rs +++ b/libs/binder/rust/src/proxy.rs @@ -429,8 +429,6 @@ impl SerializeOption for SpIBinder { } impl SerializeArray for SpIBinder {} -impl SerializeArray for Option<&SpIBinder> {} -impl SerializeArray for Option<SpIBinder> {} impl Deserialize for SpIBinder { fn deserialize(parcel: &Parcel) -> Result<SpIBinder> { @@ -448,7 +446,6 @@ impl DeserializeOption for SpIBinder { } impl DeserializeArray for SpIBinder {} -impl DeserializeArray for Option<SpIBinder> {} /// A weak reference to a Binder remote object. /// |