如何打印 construct_runtime 在运行时构建的代码?
How can I print the code that is built at runtime by construct_runtime?
我克隆了底物存储库。在 bin/node-template/runtime/src/lib.rs
中,调用 construct_runtime!
创建运行时。我在frame/support/procedural/src/construct_runtime/mod.rs
中找到了construct_runtime
的定义。它调用 construct_runtime_parsed
在运行时构建代码块。
let res = quote!(
#scrate_decl
#[derive(Clone, Copy, PartialEq, Eq, #scrate::sp_runtime::RuntimeDebug)]
pub struct #name;
impl #scrate::sp_runtime::traits::GetNodeBlockType for #name {
type NodeBlock = #node_block;
}
impl #scrate::sp_runtime::traits::GetRuntimeBlockType for #name {
type RuntimeBlock = #block;
}
#outer_event
#outer_origin
#all_modules
#module_to_index
#dispatch
#metadata
#outer_config
#inherent
#validate_unsigned
#integrity_test
);
有什么方法可以打印或检查由 construct_runtime_parsed
构建的传递给 quote!
的代码?
您可以将 cargo expand
指向 runtime/src/lib.rs
文件,它将输出扩展的源代码。
我克隆了底物存储库。在 bin/node-template/runtime/src/lib.rs
中,调用 construct_runtime!
创建运行时。我在frame/support/procedural/src/construct_runtime/mod.rs
中找到了construct_runtime
的定义。它调用 construct_runtime_parsed
在运行时构建代码块。
let res = quote!(
#scrate_decl
#[derive(Clone, Copy, PartialEq, Eq, #scrate::sp_runtime::RuntimeDebug)]
pub struct #name;
impl #scrate::sp_runtime::traits::GetNodeBlockType for #name {
type NodeBlock = #node_block;
}
impl #scrate::sp_runtime::traits::GetRuntimeBlockType for #name {
type RuntimeBlock = #block;
}
#outer_event
#outer_origin
#all_modules
#module_to_index
#dispatch
#metadata
#outer_config
#inherent
#validate_unsigned
#integrity_test
);
有什么方法可以打印或检查由 construct_runtime_parsed
构建的传递给 quote!
的代码?
您可以将 cargo expand
指向 runtime/src/lib.rs
文件,它将输出扩展的源代码。