Зміна API
Давайте розширимо API, додавши більше функціональних можливостей: ми хочемо дозволити клієнтам вказувати список рядків для листівки з днем народження:
package com.example.birthdayservice;
/** Інтерфейс сервісу Birthday. */
interface IBirthdayService {
/** Генерує привітання з днем народження. */
String wishHappyBirthday(String name, int years, in String[] text);
}
У результаті буде оновлено визначення трейту для IBirthdayService
:
trait IBirthdayService {
fn wishHappyBirthday(
&self,
name: &str,
years: i32,
text: &[String],
) -> binder::Result<String>;
}
- Зверніть увагу, що
String[]
у визначенні AIDL перекладається як&[String]
у Rust, тобто ідіоматичні типи Rust використовуються у згенерованих зв'язках скрізь, де це можливо:- Аргументи масиву
in
переводяться у зрізи. - Аргументи
out
таinout
транслюються у&mut Vec<T>
. - Значення, що повертаються, перетворюються на
Vec<T>
.
- Аргументи масиву