CXX库提供Rust和C+ 之间的安全相互调用

22-03-12 banq

CXX库提供了一种安全的机制,用于从 Rust 调用 C++ 代码和从 C++ 调用 Rust 代码。它开辟了一个共性机制,其中 Rust 和 C++ 在语义上非常相似,并指导程序员在这个机制内有效地表达他们的语言边界。
CXX 填充了低级别的东西,以便您获得安全的绑定,防止在不安全的 C 样式签名上执行外部函数接口的陷阱。
从语言边界的高级描述来看,CXX 使用类型和函数签名的静态分析来保护 Rust 和 C++ 的不变量。然后它使用一对代码生成器在两侧有效地实现边界以及任何必要的静态断言,以便稍后在构建过程中验证正确性。
由此产生的 FFI 桥以零或可忽略的开销运行,即无需复制、无需序列化、无需内存分配、无需运行时检查。

cxx在FaceBook等大规模生产中已经使用。

可被用于制作安全的 QT,rust-qt 的方法和示例 :https://github.com/rust-qt/examples
当你构建了一个 rust 库,而你的二进制文件根本不是由 rust 驱动的。rust cxx-qt 提供了由链接在 rust 库中的 c++ 主驱动程序驱动;
但rust-qt 方法更好,因为您可以使用“cargo build --release”来构建基于 rust 的 qt gui。
最重要的是,使用 rust-qt 绑定,您的主要驱动程序是 rust,

1