我已经看过了rust foreign function interface个,并且成功地(并且很高兴地)可以从我的 rust 迹代码中调用一个c库.
然而,在c代码范围内,我似乎找不到有关如何注册回调以调用rust代码的任何细节.
这可能吗?
作为"你为什么要这么做"的理由;具体地说,我正在研究在rust应用程序中嵌入lua或python,并为在嵌入式运行时上运行的脚本公开一个脚本api.
调用这些内容大致如下:
- 主要应用载荷
- 应用程序使用ffi初始化脚本运行时
- Application binds local rust functions to C-callbacks
- 应用程序调用ffi将C回调绑定到脚本层
- 应用程序运行~
- 定期使用ffi触发脚本运行时以执行字节码块
- 脚本代码执行各种琐碎的逻辑并调用绑定句柄
- 绑定句柄调用c代码
- The bound c code invokes local rust code
所有这些步骤,除了粗体的那些,我已经成功地开始工作,并且我已经使用调度器完成了一些琐碎的工作,C回调将"run me"命令转储到队列中,当控制返回到rust作用域时,应用程序查询队列并运行其中的命令...
...但从脚本方面来看,这有点尴尬,因为它意味着多个嵌套的异步回调,而脚本层的重点是简化需要进入脚本层的代码.