作者回复: 宏只不过是对 runtime 的包装。参见:https://docs.rs/tokio/latest/tokio/runtime/index.html
作者回复: 对于 HashMap 这样的结构,我们只需要传一个简单的 wrapper,而不是尝试在两端去 serialize/deserialize。因为你用到的是它的功能,其实并不关心它数据存了些什么,怎么存储的。做 FFI 切忌过于纠结数据结构如何 mapping,大部分时候,我们需要的是另一侧提供的功能。所以,只要输入输出有合适的 mapping 或者 ser/de,具体另一侧怎么实现的,完全不要去关心。在我用 pyo3 封装 xunmi 时,给出了很好的示范。
作者回复: 1. 对,自动生成的 2. 对
作者回复: 需要单独发布,如果你是在不想单独发布,就需要通过在 dependency 里用 git 的方式引入
作者回复: C ABI 是有标准的(主要就是寄存器和栈如何使用),只不过不同 CPU 和 OS 有不同的标准。比如 arm 哪个寄存器用作返回值和 x64/powerpc/mips 就不同,这非常正常。但在同一个 CPU/OS 下,C ABI 是一致的。而且所有系统的 library 都是用 C ABI,所以使用它做中间媒介再合适不过。
作者回复: 没有试过,需要找到 build binary 对应的 process,然后想办法 gdb attach 进去。这里有个讨论:https://www.reddit.com/r/rust/comments/72ip1h/attach_gdb_to_buildrs/