Зміна 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>.