问题描述
最近开始学习 Rust,但我在语法方面遇到了一些问题。 谁能向我解释这一行:
SELECT Orders.SKU,COUNT(*) AS Frequency
FROM Orders
INNER JOIN RMA ON Orders.OrderID = RMA.OrderID
GROUP BY Orders.SKU
ORDER BY COUNT(*) DESC;
所以我们在这里创建了接受一些函数的 public Kitties(variable)。 Kitties 属于 map hasher(blake2_128_concat) u32 类型,它返回 Option
映射哈希器?在文档中也找不到 hasher。
解决方法
根据您在评论中发布的链接,代码片段是一个更大的片段的一部分,看起来像
decl_storage! {
trait Store for Module<T: Trait> as SimpleMap {
SimpleMap get(fn simple_map): map hasher(blake2_128_concat) T::AccountId => u32;
}
}
decl_storage!
调用是一个宏(宏调用总是以感叹号结束,例如 vec!
或 println!
),这实质上意味着它可以对跟随它的东西。特别是,外大括号内的东西不需要是有效的 Rust,因为 decl_storage!
可以自由地转换内容。
我的猜测(在 Google 上快速搜索)是 decl_storage!
指的是 this macro,因此您必须参考其文档以了解它的期望。
这是一个宏规则。不是原始的 Rust 语法。
看看这个:https://substrate.dev/rustdocs/v3.0.0/frame_support/macro.decl_storage.html
如果您想了解有关基板中 Map 存储类型的更多信息,请查看这里,它还解释了 hasher 是什么: https://substrate.dev/recipes/storage-maps.html