1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-04-28 09:53:19 +02:00

zh-CN: translate android/interoperability/with-c/rust.md (#1401)

Part of #324


**The translation of "mangling" refers to the Chinese translation on
Wikipedia (https://en.wikipedia.org/wiki/Name_mangling#Rust).**
This commit is contained in:
Qinglin 2023-10-25 13:08:13 +08:00 committed by GitHub
parent 42c210b240
commit dd16f8755c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -12708,15 +12708,15 @@ msgstr ""
#: src/android/interoperability/with-c/rust.md:1
msgid "Calling Rust"
msgstr ""
msgstr "调用 Rust"
#: src/android/interoperability/with-c/rust.md:3
msgid "Exporting Rust functions and types to C is easy:"
msgstr ""
msgstr "将 Rust 函数和类型导出到 C 很简单:"
#: src/android/interoperability/with-c/rust.md:5
msgid "_interoperability/rust/libanalyze/analyze.rs_"
msgstr ""
msgstr "_interoperability/rust/libanalyze/analyze.rs_"
#: src/android/interoperability/with-c/rust.md:7
msgid ""
@ -12737,10 +12737,26 @@ msgid ""
"}\n"
"```"
msgstr ""
"```rust,editable\n"
"//! Rust FFI demo.\n"
"#![deny(improper_ctypes_definitions)]\n"
"\n"
"use std::os::raw::c_int;\n"
"\n"
"/// Analyze the numbers.\n"
"#[no_mangle]\n"
"pub extern \"C\" fn analyze_numbers(x: c_int, y: c_int) {\n"
" if x < y {\n"
" println!(\"x ({x}) is smallest!\");\n"
" } else {\n"
" println!(\"y ({y}) is probably larger than x ({x})\");\n"
" }\n"
"}\n"
"```"
#: src/android/interoperability/with-c/rust.md:24
msgid "_interoperability/rust/libanalyze/analyze.h_"
msgstr ""
msgstr "_interoperability/rust/libanalyze/analyze.h_"
#: src/android/interoperability/with-c/rust.md:26
msgid ""
@ -12755,10 +12771,20 @@ msgid ""
"#endif\n"
"```"
msgstr ""
"```c\n"
"#ifndef ANALYSE_H\n"
"#define ANALYSE_H\n"
"\n"
"extern \"C\" {\n"
"void analyze_numbers(int x, int y);\n"
"}\n"
"\n"
"#endif\n"
"```"
#: src/android/interoperability/with-c/rust.md:37
msgid "_interoperability/rust/libanalyze/Android.bp_"
msgstr ""
msgstr "_interoperability/rust/libanalyze/Android.bp_"
#: src/android/interoperability/with-c/rust.md:39
msgid ""
@ -12771,14 +12797,22 @@ msgid ""
"}\n"
"```"
msgstr ""
"```javascript\n"
"rust_ffi {\n"
" name: \"libanalyze_ffi\",\n"
" crate_name: \"analyze_ffi\",\n"
" srcs: [\"analyze.rs\"],\n"
" include_dirs: [\".\"],\n"
"}\n"
"```"
#: src/android/interoperability/with-c/rust.md:48
msgid "We can now call this from a C binary:"
msgstr ""
msgstr "我们现在可以从一个 C 二进制文件中调用它:"
#: src/android/interoperability/with-c/rust.md:50
msgid "_interoperability/rust/analyze/main.c_"
msgstr ""
msgstr "_interoperability/rust/analyze/main.c_"
#: src/android/interoperability/with-c/rust.md:52
msgid ""
@ -12792,10 +12826,19 @@ msgid ""
"}\n"
"```"
msgstr ""
"```c\n"
"#include \"analyze.h\"\n"
"\n"
"int main() {\n"
" analyze_numbers(10, 20);\n"
" analyze_numbers(123, 123);\n"
" return 0;\n"
"}\n"
"```"
#: src/android/interoperability/with-c/rust.md:62
msgid "_interoperability/rust/analyze/Android.bp_"
msgstr ""
msgstr "_interoperability/rust/analyze/Android.bp_"
#: src/android/interoperability/with-c/rust.md:64
msgid ""
@ -12807,6 +12850,13 @@ msgid ""
"}\n"
"```"
msgstr ""
"```javascript\n"
"cc_binary {\n"
" name: \"analyze_numbers\",\n"
" srcs: [\"main.c\"],\n"
" static_libs: [\"libanalyze_ffi\"],\n"
"}\n"
"```"
#: src/android/interoperability/with-c/rust.md:75
msgid ""
@ -12817,6 +12867,12 @@ msgid ""
"adb shell /data/local/tmp/analyze_numbers\n"
"```"
msgstr ""
"```shell\n"
"m analyze_numbers\n"
"adb push \"$ANDROID_PRODUCT_OUT/system/bin/analyze_numbers /data/local/"
"tmp\"\n"
"adb shell /data/local/tmp/analyze_numbers\n"
"```"
#: src/android/interoperability/with-c/rust.md:83
msgid ""
@ -12824,6 +12880,8 @@ msgid ""
"will just be the name of the function. You can also use `#[export_name = "
"\"some_name\"]` to specify whatever name you want."
msgstr ""
"`#[no_mangle]` 禁用了 Rust 通常的名称重整,因此导出的符号将仅为函数的名称。你"
"还可以使用 `#[export_name = \"some_name\"]` 来指定任意你想要的名称。"
#: src/android/interoperability/cpp.md:3
msgid ""