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>.