API の変更
API を拡張しましょう。クライアントがバースデーカードの行のリストを 指定できるようにします:
package com.example.birthdayservice;
/** バースデーサービスのインターフェース。 */
interface IBirthdayService {
/** Happy Birthday メッセージを生成します。 */
String wishHappyBirthday(String name, int years, in String[] text);
}
これにより、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>;
}
- AIDL 定義の
String[]が Rust では&[String]に変換されていることに 注目してください。つまり、生成されるバインディングでは可能な限り 慣用的な Rust の型が使用されます:in配列引数はスライスに変換されます。out引数とinout引数は&mut Vec<T>に変換されます。- 戻り値は
Vec<T>を返す形に変換されます。