Rust ライブラリ

rust_library を使用して、Android 用の新しい Rust ライブラリを作成します。

ここでは、2 つのライブラリへの依存関係を宣言します。

  • libgreeting: 以下で定義します。
  • libtextwrap: すでにexternal/rust/crates/ に取り込まれているクレートです。

hello_rust/Android.bp:

rust_binary { name: "hello_rust_with_dep", crate_name: "hello_rust_with_dep", srcs: ["src/main.rs"], rustlibs: [ "libgreetings", "libtextwrap", ], prefer_rlib: true, // ダイナミック リンク エラーを回避するために必要です。 } rust_library { name: "libgreetings", crate_name: "greetings", srcs: ["src/lib.rs"], }

hello_rust/src/main.rs:

//! Rust のデモ。 use greetings::greeting; use textwrap::fill; /// 挨拶を標準出力に出力します。 fn main() { println!("{}", fill(&greeting("Bob"), 24)); }

hello_rust/src/lib.rs:

//! 挨拶ライブラリ。 /// `name` に挨拶します。 pub fn greeting(name: &str) -> String { format!("Hello {name}, it is very nice to meet you!") }

前と同じようにバイナリをビルド、push、実行します。

m hello_rust_with_dep adb push "$ANDROID_PRODUCT_OUT/system/bin/hello_rust_with_dep" /data/local/tmp adb shell /data/local/tmp/hello_rust_with_dep
Hello Bob, it is very nice to meet you!