Зміна 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>.
- Аргументи масиву