当前位置:嗨网首页>书籍在线阅读

10-小结

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

10.7 小结

Rust为我们提供了方便的FFI抽象,可以与不同的语句进行交互,并且对C语言提供了一流的支持,因为它为标记为extern的函数公开了C ABI(cdecl)。因此,它适用于很多C/C++库的绑定。其中一个突出的例子是SpiderMonkey JavaScript引擎,它是用C++实现的,用于Servo项目。Servo引擎通过bindgen软件包生成绑定来调用C++。

但是,当我们进行跨语言交互时,一种语言的语言构造和数据表示不需要与另一种语言的匹配。因此,我们需要在Rust代码中添加额外的注释和不安全的代码块,以便编译器了解我们的意图。我们在使用#[repr(C)]属性时就会看到这一点。外部函数接口与Rust的很多其他特性一样是零成本的,这意味着链接到其他语言的代码时会产生最小的运行时成本。我们还探讨了Python和Node.js,它们为这些低级FFI抽象提供了很好的包装器。对于没有这种包装器的语言,通过Rust标准库提供的裸FFI API,也能够实现与其他语言的交互。

到本章为止,我们的内容已经涵盖了Rust的核心主题,我们希望读者能够尽快掌握该语言的核心特性。接下来的内容将涵盖Rust框架和相关软件包的案例研究,并将重点放在Rust的实际项目应用上。