Luk*_*odt 13
虽然Rust可以在没有开销的情况下调用C函数,但Rust编译器仍然需要知道这些函数的存在.要告诉编译器,您必须在extern "C" { .. }块中声明这些函数.您可以在Rust书的FFI章节中阅读有关该主题的更多信息.对于许多人使用的C函数(例如Vulkan),将所有这些声明放入其他人可以使用的Rust库中是有意义的,而不是自己编写绑定.
使用上面提到的绑定,我们只是将原始C接口暴露给Rust程序员.但是大多数Rust程序员宁愿使用Rust中惯用的API(我们称之为"生锈").那就是:使用Rust的高级概念,如特征和闭包,以及"安全".
您链接的Vulkan库:
所述第二链路是刚刚是利用工具(防锈定义BindGen)结合产生的原始.
tomaka库的目的是创建一个生锈的API,因此它不仅仅是函数声明的集合.tomaka选择引入非常少的开销来创建一个库,大多数Rust程序员使用它比C接口更舒服.(顺便说一下:tomaka也为OpenGL做了这个).
我真的不知道您链接的第一个库,但我认为这是上述两种方法之间的关系.