作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 Parity Substrate 中使用 Struct
创建数据类型自定义运行时。数据类型旨在是通用的,以便我可以在不同类型上使用它。
我正在尝试以下操作,但无法编译。编译器提示找不到 T
的子类型。
pub struct CustomDataType<T> {
data: Vec<u8>,
balance: T::Balance,
owner: T::AccountId,
}
我应该能够编译通用结构。
最佳答案
不幸的是,the answer that Sven Marnach gives在 Parity Substrate 的上下文中不起作用。在结构之上使用了额外的派生宏,这会在沿着“直观”路径走下去时导致问题。
在这种情况下,您应该将所需的特征直接传递到您的自定义类型中,并为结构的上下文创建新的泛型。
像这样:
use srml_support::{StorageMap, dispatch::Result};
pub trait Trait: balances::Trait {}
#[derive(Encode, Decode, Default)]
pub struct CustomDataType <Balance, Account> {
data: Vec<u8>,
balance: Balance,
owner: Account,
}
decl_module! {
// ... removed for brevity
}
decl_storage! {
trait Store for Module<T: Trait> as RuntimeExampleStorage {
Value get(value): CustomDataType<T::Balance, T::AccountId>;
}
}
我们刚刚创建了a doc for this exact scenario希望对您有所帮助。
关于rust - 如何在 Parity Substrate 自定义运行时中使用通用结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54147877/
我是一名优秀的程序员,十分优秀!