Parcelable
Binder для Rust поддерживает передачу parcelable напрямую:
birthday_service/aidl/com/example/birthdayservice/BirthdayInfo.aidl:
package com.example.birthdayservice;
parcelable BirthdayInfo {
String name;
int years;
}
birthday_service/aidl/com/example/birthdayservice/IBirthdayService.aidl:
import com.example.birthdayservice.BirthdayInfo;
interface IBirthdayService {
/** То же самое, но с parcelable. */
String wishWithInfo(in BirthdayInfo info);
}
birthday_service/src/client.rs:
// Copyright 2024 Google LLC
// SPDX-License-Identifier: Apache-2.0
fn main() {
binder::ProcessState::start_thread_pool();
let service = connect().expect("Failed to connect to BirthdayService");
let info = BirthdayInfo { name: "Алиса".into(), years: 123 };
service.wishWithInfo(&info)?;
}