在 Rust 中开发 substrate runtime 时是否有必要使用宏?

Is it necessary to use macros while developing substrate runtime in rust?

当我查看与基板相关的项目代码时,我感到非常惊讶。太难懂了,到处都是运行时宏

现在,您可以更轻松地基于 Substrate 框架开发自己的区块链。最困难的部分可能是如何让 rustc 接受你的代码。

在Substrate上开发不需要使用宏。你可能知道,宏最终会扩展为真正的 rust 代码,所以如果你了解 Substrate 在该级别的内部工作原理,那么你当然可以自己编写该代码,但这肯定不如使用宏那么容易.

我相信宏扩展到您编写的代码行数的大约 3 倍,并且包含我们试图对普通运行时开发人员保持不透明的逻辑。

运行时宏可能难以调试或使用是一个公平的批评,但我们正在寻求通过使用 Rust 属性宏并更接近传统 Rust 语法来解决这个问题。

在此处查看跟踪问题:https://github.com/paritytech/substrate/issues/5678