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

Speaker Notes

  • Зверніть увагу, що String[] у визначенні AIDL перекладається як &[String] у Rust, тобто ідіоматичні типи Rust використовуються у згенерованих зв’язках скрізь, де це можливо:
    • Аргументи масиву in переводяться у зрізи.
    • Аргументи out та inout транслюються у &mut Vec<T>.
    • Значення, що повертаються, перетворюються на Vec<T>.