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
einout
args são traduzidos para&mut Vec<T>
.- Valores de retorno são traduzidos para retornar um
Vec<T>
.