rust sdl2和sdl2_sys之间有什么区别?

gajydyqb  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(159)

据我所知,sdl2_sys是一个为所有SDL 2自动生成的绑定箱,而sdl2是一个基于sdl2_sys的绑定箱,它缺乏某些函数的等价物,特别是IMG_LoadSVG_RW
我看到一些消息来源说sdl2是SDL 2(here)的安全 Package 器,但我还没有看到任何人对sdl2_sys说同样的话。当使用sdl2_sys的函数时,我不得不写很多unsafe,我不喜欢这样,因为这意味着不再保证我写的是安全的。sdl2_sys的另一个问题是,函数有时会返回c类型(到目前为止,我只需要处理 *c_char,但我相信还有更多),转换回来很尴尬。最后,到目前为止,我找到的每个教程都是针对sdl2的,所以很难找到具体的方法。
我需要使用IMG_LoadSVG_RW,所以很明显,我将不得不以某种方式使用sdl2_sys,但我想知道是否最好只使用sdl2_sys,我不能使用sdl2和处理导致的问题,或使用sdl2_sys的一切,并有一个显着更差的经验。

ctehm74n

ctehm74n1#

一般来说,*_sys crate包含(通常是自动生成的)到相关库的C API的一对一绑定,一些链接到库的Rust设置,除此之外什么都没有。主要的非sys crate为库提供了一个内存安全且符合人体工程学的接口,使用来自sys crate的绑定编写。
通常不推荐直接使用sys crates-您可能只是在编写C。然而,非sys crate中的安全绑定是由第三方编写的,他们可能没有抽出时间来安全地绑定库中的每一个功能,所以他们可能缺乏。

相关问题