【Rust】Foreign Function
世界上的每个程序并非都是用 Rust
编写的,我们希望能够在我们的 Rust
程序中使用许多用其他语言实现的关键库和接口。Rust
的外部函数接口 (FFI
) 允许 Rust
代码调用用 C
编写的函数,也可以是 C++
。由于大多数操作系统都提供 C
接口,Rust
的外部函数接口允许立即访问各种低级功能。
在本章中,我们将编写一个与 libgit2
链接的程序,libgit2
是一个用于与 Git
版本控制系统一起工作的 C
库。首先,我们使用前一章中展示的 unsafe
特性展示直接从 Rust
使用 C
函数的例子,然后,我们将展示如何构建 libgit2
的安全接口,灵感来自开源 git2-rs
。本文假设你熟悉 C
以及编译和链接 C
程序的机制,还假设熟悉 Git
版本控制系统。
现实中确实存在用于与许多其他语言进行通信的 Rust
包,包括 Python
、JavaScript
、Lua
和 Java
。这里没有篇幅介绍它们,但归根结底,所有这些接口都是使用 C
外来函数接口构建的。