Bibliotecas de Rust

VocĂȘ usa rust_library para criar uma nova biblioteca Rust para Android.

Aqui declaramos uma dependĂȘncia em duas bibliotecas:

  • libgreeting, que definimos abaixo,
  • libtextwrap, que Ă© um crate jĂĄ oferecido em 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, // Precisamos disso para evitar erro de ligação dinùmica.
}

rust_library {
    name: "libgreetings",
    crate_name: "greetings",
    srcs: ["src/lib.rs"],
}

hello_rust/src/main.rs:

//! Rust demo.

use greetings::greeting;
use textwrap::fill;

/// Imprime uma saudação na saída padrão.
fn main() {
    println!("{}", fill(&greeting("Bob"), 24));
}

hello_rust/src/lib.rs:

//! Greeting library.

/// Saudação `nome`.
pub fn greeting(name: &str) -> String {
    format!("OlĂĄ {nome}, prazer em conhecĂȘ-lo!")
}

VocĂȘ constrĂłi, envia e executa o binĂĄrio como antes:

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!