Alterando API

Vamos estender a API com mais funcionalidades: queremos permitir que os clientes especifiquem uma lista de frases para o cartĂŁo de aniversĂĄrio:

package com.example.birthdayservice; /** Interface de serviço de aniversårio. */ interface IBirthdayService { /** Gera uma mensagem de feliz aniversårio. */ String wishHappyBirthday(String name, int years, in String[] text); }

Isso resulta em uma definição de trait atualizada para IBirthdayService.

trait IBirthdayService { fn wishHappyBirthday( &self, name: &str, years: i32, text: &[String], ) -> binder::Result<String>; }

Speaker Notes

  • Observe como o String[] na definição AIDL Ă© traduzido como um &[String] em Rust, ou seja, que tipos de Rust idiomĂĄticos sĂŁo usados nos vĂ­nculos gerados sempre que possĂ­vel:
    • in argumentos de array sĂŁo traduzidos para slices.
    • out e inout args sĂŁo traduzidos para &mut Vec<T>.
    • Valores de retorno sĂŁo traduzidos para retornar um Vec<T>.