Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Изменение API

Расширим API: позволим клиентам передавать список строк для поздравительной открытки:

package com.example.birthdayservice;

/** Интерфейс сервиса дня рождения. */
interface IBirthdayService {
    /** Сгенерировать поздравление с днём рождения. */
    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>;
}
  • Обратите внимание, как String[] в определении AIDL переводится в &[String] в Rust, то есть в сгенерированных привязках везде, где возможно, используются идиоматичные типы Rust:
    • Входные массивы (in) переводятся в срезы.
    • Аргументы out и inout переводятся в &mut Vec<T>.
    • Возвращаемые значения переводятся в возврат Vec<T>.