编译成wasm时可以替代ctor /库存吗?

时间:2020-07-11 21:24:05

标签: rust rust-macros webassembly

ctor的板条箱当前不支持网络组装,although there is active discussion about how to fix this

尽管我很清楚C ++的静态初始化相关的问题,但是能够在启动时向工厂注册是非常方便的功能,并且在许多情况下有必要避免违反DRY原理。如果没有它,每次想给工厂添加新的可能性时,都必须向main()添加一行单独的代码,如果需要导入新函数,则可能需要增加几行。这很快就变得乏味。

我想知道是否可以使用程序属性宏和build.rs构建等效的东西(至少当您要注册的所有内容都集中在一个箱子中时)。该宏将用于标记我要注册的功能,并且该实现的实现会将这些功能的模块路径("crate::your::registered_function")保存到文件中某处的一侧,否则只是传递。然后build.rs会生成一个函数,该函数调用文件中列出的所有函数,而我将手动main()调用该函数。

  • 还有其他可行的技巧吗?
  • 可以用作参考的地方是否已经存在这种实现?
  • 程序宏将如何实际生成要调用的函数的模块路径?这里有module_path!,但是如果从过程宏的定义内部调用,它将提供宏的模块路径,而不是与TokenStream将要扩展到的模块路径相关的模块路径。该宏可能会生成对module_path!的调用,但直到稍后运行最终程序时该调用才会评估。

0 个答案:

没有答案