与 C 的互操作性

Rust 对使用 C 调用约定链接目标文件提供了完整的支持。同样地,你可以导出 Rust 函数并从 C 中调用它们。

如果你愿意的话,你可以手工完成它:

  1. extern "C" {
  2. fn abs(x: i32) -> i32;
  3. }
  4. fn main() {
  5. let x = -42;
  6. // SAFETY: `abs` doesn't have any safety requirements.
  7. let abs_x = unsafe { abs(x) };
  8. println!("{x}, {abs_x}");
  9. }

我们已经在安全 FFI 封装容器练习中看到了这个例子。

这假设对目标平台拥有充分的了解,不建议用于生产环境。

接下来我们将探讨更好的选择。