在substrate master里,./bin/node/rpc-client/src/main.rs中,use sc_rpc::author::{AuthorClient.. 其中AuthorClient找不到实现代码,通过检索发现./client/rpc-api/src/author/mod.rs中有一句pub use self::gen_client::Client as AuthorClient。但依然没有实现代码,请问gen_client怎么理解,AuthorClient是怎么实现的?是采用类似java反射的动态加载吗?
1
共 2 条评论, 1 页
评论区
写评论Rust 好像没有动态加载。如果找不到实现的代码,一般是在某个宏里。
注意这里这个
#[rpc]
:这是一个 attribute macro。再看前面,这个宏是从
jsonrpc_derive
引入的。再去翻
jsonrpc_derive
的代码(不在同一个仓库),很容易就找到了:也就是说,
gen_client
确实是由这个宏生成的。#[rpc] 会生成动态代码,实际的type是author::rpc_impl_AuthorApi::gen_client 具体可以参考 https://docs.rs/crate/jsonrpc-derive/14.0.5/source/src/lib.rs https://docs.rs/crate/jsonrpc-derive/14.0.5/source/src/to_client.rs