Keyword extern[−][src]
Expand description
链接到或导入外部代码。
extern
关键字在 Rust 中的两个位置使用。
一种是与 crate
关键字结合使用,以使您的 Rust 代码了解项目中的其他 Rust crates,即, extern crate lazy_static;
.
另一个用途是在外部函数接口 (FFI) 中。
extern
在 FFI 中用于两个不同的上下文。
第一种是外部块的形式,用于声明 Rust 代码可以调用外部代码的函数接口。
ⓘ
#[link(name = "my_c_library")] extern "C" { fn my_c_function(x: i32) -> bool; }Run
该代码将在运行时尝试与类 Unix 系统上的 libmy_c_library.so
和 Windows 上的 my_c_library.dll
链接,如果找不到要链接的内容,则尝试与 panic 链接。
然后,Rust 代码可以使用 my_c_function
,就好像它是其他任何不安全的 Rust 函数一样。
使用非 Rust 语言和 FFI 本质上是不安全的,因此包装程序通常围绕 C API 构建。
FFI 的镜像用例也通过 extern
关键字完成:
#[no_mangle] pub extern "C" fn callable_from_c(x: i32) -> bool { x % 3 == 0 }Run
如果编译为 dylib,则可以将 C00 库链接到生成的 .so,并且可以像使用任何其他库一样使用该函数。