تغییر دادن API

اجازه دهید API را با عملکرد بیشتری گسترش دهیم: می‌خواهیم به مشتریان اجازه دهیم لیستی از خطوط را برای کارت تولد مشخص کنند:

package com.example.birthdayservice;

/** Birthday service interface. */
interface IBirthdayService {
    /** Generate a Happy Birthday message. */
    String wishHappyBirthday(String name, int years, in String[] text);
}

این منجر به یک تعریف ویژگی به روز شده برای IBirthdayService می‌شود:

trait IBirthdayService {
    fn wishHappyBirthday(
        &self,
        name: &str,
        years: i32,
        text: &[String],
    ) -> binder::Result<String>;
}
  • توجه داشته باشید که چگونه String[]در تعریف AIDL به عنوان &[String] در Rust ترجمه می‌شود، به‌عنوان مثال از idiomatic Rust type در bindingهای تولید شده تا جایی که ممکن است استفاده می‌شود:
    • آرگومان های آرایه in به sliceها ترجمه می‌شوند.
    • آرگومان‌هایout و inout به &mut Vec<T> ترجمه می‌شوند.
    • مقادیر بازگشتی به بازگرداندن Vec<T> ترجمه می‌شوند.