需要 Rust Map 语法解释

Rust Map Syntax Explanation Needed

最近开始学习 Rust,我在语法方面遇到了一些问题。 谁能给我解释一下这一行:

// Stores all the kitties, key is the kitty id / index

pub Kitties get(fn kitties): map hasher(blake2_128_concat) u32 => Option<Kitty>;

所以我们在这里创建 public 接受某些功能的小猫(变量)。 Kitties 是一种类型 map hasher(blake2_128_concat) u32 which returns Option

地图散列器?在文档中也找不到散列器。

根据您在评论中发布的 link,该代码片段是更大片段的一部分,类似于

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

如果你想了解更多关于 Substrate 中 Map 存储类型的信息,请检查这个,它还解释了什么是 hasher: https://substrate.dev/recipes/storage-maps.html