需要 Rust Map 语法解释

问题描述

最近开始学习 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