能力:Store

现在你已经了解了通过key能力启用的顶层存储函数,我们可以讨论列表中的最后一个能力 - store

定义

store是一种特殊的能力,允许将类型存储在对象中。该能力是字段可以在具有key能力的结构体中使用的必需条件。换句话说,store能力允许值被包装在对象中。

store能力还放宽了转移操作的限制。我们在受限和公共转移部分中会详细讨论。

示例

在之前的章节中,我们已经使用了具有key能力的类型:所有对象必须有一个UID字段,我们在示例中使用了它;我们还将Storable类型作为Config结构体的一部分使用。Config类型也具有store能力。

/// 这个类型具有`store`能力。
public struct Storable has store {}

/// Config 包含一个具有`store`能力的`Storable`字段。
public struct Config has key, store {
    id: UID,
    stores: Storable,
}

/// MegaConfig 包含一个具有`store`能力的`Config`字段。
public struct MegaConfig has key {
    id: UID,
    config: Config, // 在这里!
}

具有store能力的类型

在Move中,除了引用之外,所有原生类型都具有store能力。包括:

标准库中定义的所有类型也具有store能力。包括:

进一步阅读