diff options
| author | 2023-03-15 17:47:29 +0000 | |
|---|---|---|
| committer | 2023-03-15 17:47:29 +0000 | |
| commit | 7d70a2bc3cbb69ef29b8809d632b9aa4d5a65bb1 (patch) | |
| tree | 17f557928104610c7ab0d91e1b6b8676572e78a3 | |
| parent | 5a52bcc740984a4bf3e12b7e436cff68446d7605 (diff) | |
| parent | b63442050674392b38165ac5b2039db6ac46a382 (diff) | |
Merge "rust: Add support for parameterized types" am: b634420506
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2485657
Change-Id: Ia1a637f8d61319711511d71d46ef5a422e5460f1
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | libs/binder/rust/src/parcel/parcelable.rs | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/libs/binder/rust/src/parcel/parcelable.rs b/libs/binder/rust/src/parcel/parcelable.rs index 6f4c37530f..4b658fc74d 100644 --- a/libs/binder/rust/src/parcel/parcelable.rs +++ b/libs/binder/rust/src/parcel/parcelable.rs @@ -771,7 +771,13 @@ impl<T: DeserializeOption> Deserialize for Option<T> { #[macro_export] macro_rules! impl_serialize_for_parcelable { ($parcelable:ident) => { - impl $crate::binder_impl::Serialize for $parcelable { + $crate::impl_serialize_for_parcelable!($parcelable < >); + }; + ($parcelable:ident < $( $param:ident ),* , >) => { + $crate::impl_serialize_for_parcelable!($parcelable < $($param),* >); + }; + ($parcelable:ident < $( $param:ident ),* > ) => { + impl < $($param),* > $crate::binder_impl::Serialize for $parcelable < $($param),* > { fn serialize( &self, parcel: &mut $crate::binder_impl::BorrowedParcel<'_>, @@ -780,9 +786,9 @@ macro_rules! impl_serialize_for_parcelable { } } - impl $crate::binder_impl::SerializeArray for $parcelable {} + impl < $($param),* > $crate::binder_impl::SerializeArray for $parcelable < $($param),* > {} - impl $crate::binder_impl::SerializeOption for $parcelable { + impl < $($param),* > $crate::binder_impl::SerializeOption for $parcelable < $($param),* > { fn serialize_option( this: Option<&Self>, parcel: &mut $crate::binder_impl::BorrowedParcel<'_>, @@ -808,7 +814,13 @@ macro_rules! impl_serialize_for_parcelable { #[macro_export] macro_rules! impl_deserialize_for_parcelable { ($parcelable:ident) => { - impl $crate::binder_impl::Deserialize for $parcelable { + $crate::impl_deserialize_for_parcelable!($parcelable < >); + }; + ($parcelable:ident < $( $param:ident ),* , >) => { + $crate::impl_deserialize_for_parcelable!($parcelable < $($param),* >); + }; + ($parcelable:ident < $( $param:ident ),* > ) => { + impl < $($param: Default),* > $crate::binder_impl::Deserialize for $parcelable < $($param),* > { fn deserialize( parcel: &$crate::binder_impl::BorrowedParcel<'_>, ) -> std::result::Result<Self, $crate::StatusCode> { @@ -830,9 +842,9 @@ macro_rules! impl_deserialize_for_parcelable { } } - impl $crate::binder_impl::DeserializeArray for $parcelable {} + impl < $($param: Default),* > $crate::binder_impl::DeserializeArray for $parcelable < $($param),* > {} - impl $crate::binder_impl::DeserializeOption for $parcelable { + impl < $($param: Default),* > $crate::binder_impl::DeserializeOption for $parcelable < $($param),* > { fn deserialize_option( parcel: &$crate::binder_impl::BorrowedParcel<'_>, ) -> std::result::Result<Option<Self>, $crate::StatusCode> { |