【发布时间】:2014-01-24 21:54:28
【问题描述】:
我查看了rust foreign function interface,并且成功(并且很高兴)可以从我的 rust 代码中调用一个 c 库。
但是,我似乎无法在 c 代码范围内找到有关如何注册回调以调用 rust 代码的任何详细信息。
这可能吗?
作为“你为什么要这样做?”的理由;具体来说,我正在考虑将 lua 或 python 嵌入到 rust 应用程序中,并为在嵌入式运行时上运行的脚本公开一个 scripting-api。
调用这些将类似于以下内容:
- 主要的 rust 应用程序负载
- 应用程序使用 ffi 来初始化脚本运行时
- 应用程序将本地 rust 函数绑定到 C 回调
- 应用程序调用 ffi 将 C 回调绑定到脚本层
- 应用程序运行~
- 定期使用 ffi 触发脚本运行时执行字节码块
- 脚本代码执行各种琐碎的逻辑并调用绑定句柄
- 绑定的句柄调用 c 代码
- 绑定的 c 代码调用本地 rust 代码
除了粗体部分之外的所有这些步骤,我已经设法开始工作,并且我使用调度程序完成了一些琐碎的工作,C 回调将“运行我”命令转储到队列中以及何时控制返回到 rust 作用域,应用程序查询队列并运行其中的命令...
...但是从脚本方面来说有点尴尬,因为它意味着多个嵌套的异步回调,而脚本层的重点是简化需要进入脚本层的代码。
【问题讨论】:
标签: rust