Как посмотреть окончательный код, сгенерированный макросами в субстрате четности? - PullRequest
1 голос
/ 21 июня 2019

Субстрат использует множество макросов для облегчения написания модулей времени выполнения:

  • construct_runtime!
  • decl_module!
  • decl_storage!
  • decl_event!
  • и т. Д. *

Однако трудно понять, что на самом деле делают эти макросы и как выглядит окончательный код.Как я могу копнуть глубже в эти макросы и расширения?

Ответы [ 2 ]

2 голосов
/ 23 июня 2019

Для меня наиболее удобным решением является использование cargo expand

https://github.com/dtolnay/cargo-expand

cargo install cargo-expand

, а затем просто позвоните из своего ящика

cargo expand
2 голосов
/ 21 июня 2019

Если вы хотите посмотреть окончательно сгенерированный код для ящика, вы можете запустить следующее:

cargo +nightly rustc --profile=check --package <crate-name> --lib -- -Zunstable-options --pretty=expanded > <output-file>

Обратите внимание, что здесь есть две переменные: <crate-name> и <output-file>.

Таким образом, если вы хотите посмотреть на свое окончательное время выполнения из шаблона subst-node-template, вы должны выполнить:

cargo +nightly rustc --profile=check --package node-template-runtime --lib -- -Zunstable-options --pretty=expanded > substrate-node-template-runtime.rs

Или, если вы хотите посмотреть только на расширение одного модуля, такого как модуль Sudo, вы можете сделать:

cargo +nightly rustc --profile=check --package srml-sudo --lib -- -Zunstable-options --pretty=expanded > sudo-module.rs

Это приведет к созданию файлов со всем расширенным кодом, которые выглядят следующим образом: https://gist.github.com/shawntabrizi/b4a1952dbd3af113e8a3498418e52741

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...