如何在Rust中安全封装带回调的C库且不违反借用规则?
如何在Rust中安全封装带回调的C库且不违反借用规则?
最近我在给一个C库写Rust封装层,遇到了个棘手的问题:这个C库是通过调用客户端提供的回调函数来和我们交互的,它的通用工作流程是这样的:
- 初始化C库
- 向C库注册一系列回调函数,同时传入一个指向“用户数据”的指针(
void*类型) - 启动C库运行
- 之后C库会在需要的时候调用我们注册的回调函数,并且把之前传入的“用户数据”指针作为参数之一传递过来
备注:内容来源于stack exchange,提问作者Elad Maimoni
相关产品推荐
相关产品推荐

