微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从另一个托盘访问托盘中的存储和功能?

如何解决如何从另一个托盘访问托盘中的存储和功能?

我有一个通用托盘,供其他托盘使用。例如,下面是常见的共享托盘:

#![cfg_attr(not(feature = "std"),no_std)]

#[cfg(test)]
mod tests;

pub trait Trait: system::Trait {
    type Event: From<Event<Self>> + Into<<Self as system::Trait>::Event>;
    type Currency: Currency<Self::AccountId> + ReservableCurrency<Self::AccountId>;
}

type AccountIdOf<T> = <T as system::Trait>::AccountId;
type BalanceOf<T> = <<T as Trait>::Currency as Currency<AccountIdOf<T>>>::Balance;
type StructInfoOf<T> = StructInfo<AccountIdOf<T>,<T as system::Trait>::BlockNumber>;

#[derive(Encode,Decode,Default,PartialEq,Eq)]
#[cfg_attr(feature = "std",derive(Debug))]
pub struct StructInfo<AccountId,BlockNumber> {
    name: Vec<u8>,owner: AccountId,created: BlockNumber,}

decl_storage! {
    trait Store for Module<T: Trait> as TokenStore {

    pub Data get(fn data): map hasher(blake2_128_concat) u32 => Option<StructInfoOf<T>>;
    pub DataCount get(fn data_count): u32;


    }
}

decl_event!(
    pub enum Event<T>
    where
        AccountId = <T as system::Trait>::AccountId,Balance = BalanceOf<T>,{
        /// Test event
        TestEvent(u32,Balance,AccountId),}
);

decl_error! {
    pub enum Error for Module<T: Trait> {
        TestError
    }
}

decl_module! {
    pub struct Module<T: Trait> for enum Call where origin: T::Origin {
        fn deposit_event() = default;


        #[weight = 10_000]
        pub fn test_dispatch_call(origin) -> dispatchResult {
            let caller = ensure_signed(origin)?;
            Ok(())
        }   
        
    }
}

impl<T: Trait> Module<T> {


    pub fn public_function(value: u32) -> BalanceOf<T>  {
        let value: u32 = 0;
        Self::data_count()
    }
}

但我不确定如何从公共模块调用 Data、DataCount、test_dispatch_call、public_function。

解决方法

[dependencies] 中添加 Cargo.toml 中需要的托盘,如 pallet-test = {default-features = false,path ='../test'}[features] [std] 中,如 'pallet-test/std'

在当前托盘中:在 pub trait Trait (v2) 或 pub trait Config(v3) 中添加 pallet-test 像 {{1 }}

访问函数:pub trait Config: frame_system::Config + pallet_test::Config{};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。