当调用"RawOrigin:Signed(who)"时,".into()"会做什



我见过.into()frame_system::RawOrigin::Signed(who).into()一样使用过好几次。据我所知,它进行了一些转换,但into的文档并没有明确(对我来说(如何知道它要转换成什么。就上下文而言,我感兴趣的一个特定示例来自sudo模块中的sudo_as()

fn sudo_as(origin, who: <T::Lookup as StaticLookup>::Source, call: Box<<T as Trait>::Call>) {
// This is a public call, so we ensure that the origin is some signed account.
let sender = ensure_signed(origin)?;
ensure!(sender == Self::key(), Error::<T>::RequireSudo);
let who = T::Lookup::lookup(who)?;
let res = match call.dispatch(frame_system::RawOrigin::Signed(who).into()) {
Ok(_) => true,
Err(e) => {
sp_runtime::print(e);
false
}
};
Self::deposit_event(RawEvent::SudoAsDone(res));
}

into将根据调用它的上下文返回"正确"类型,这是正确的。在您提供的示例中,您可以查看dispatch函数的文档,并看到它需要一个Origin作为参数。但是,正如您所看到的,who变量正被用于创建RawOrigin类型。因此,into函数用于将所提供的类型(RawOrigin(转换为所需的任何类型(在本例中为Origin(。

相关内容

  • 没有找到相关文章

最新更新