تغییر دادن 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>; }

Speaker Notes

  • توجه داشته باشید که چگونه String[]در تعریف AIDL به عنوان &[String] در Rust ترجمه می‌شود، به‌عنوان مثال از idiomatic Rust type در bindingهای تولید شده تا جایی که ممکن است استفاده می‌شود:
    • آرگومان های آرایه in به sliceها ترجمه می‌شوند.
    • آرگومان‌هایout و inout به &mut Vec<T> ترجمه می‌شوند.
    • مقادیر بازگشتی به بازگرداندن Vec<T> ترجمه می‌شوند.