src/android/aidl/example-service/changing-definition.md
Let's extend the API: we'll let clients specify a list of lines for the birthday card:
package com.example.birthdayservice;
/** Birthday service interface. */
interface IBirthdayService {
/** Generate a Happy Birthday message. */
String wishHappyBirthday(String name, int years, in String[] text);
}
This results in an updated trait definition for IBirthdayService:
# // Copyright 2024 Google LLC
# // SPDX-License-Identifier: Apache-2.0
#
trait IBirthdayService {
fn wishHappyBirthday(
&self,
name: &str,
years: i32,
text: &[String],
) -> binder::Result<String>;
}
String[] in the AIDL definition is translated as a &[String]
in Rust, i.e. that idiomatic Rust types are used in the generated bindings
wherever possible:
in array arguments are translated to slices.out and inout args are translated to &mut Vec<T>.Vec<T>.