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>;
}
  • 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>.