据我所知,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的一切,并有一个显着更差的经验。
1条答案
按热度按时间ctehm74n1#
一般来说,
*_sys
crate包含(通常是自动生成的)到相关库的C API的一对一绑定,一些链接到库的Rust设置,除此之外什么都没有。主要的非sys
crate为库提供了一个内存安全且符合人体工程学的接口,使用来自sys
crate的绑定编写。通常不推荐直接使用
sys
crates-您可能只是在编写C。然而,非sys
crate中的安全绑定是由第三方编写的,他们可能没有抽出时间来安全地绑定库中的每一个功能,所以他们可能缺乏。