【问题标题】:Problems Initialize Rust Struct初始化 Rust 结构的问题
【发布时间】:2021-08-27 00:01:43
【问题描述】:

制作纸牌游戏来学习 Rust。初始化我的结构时遇到问题。

enum Effect {
    Passive,
    EarnEffect,
    ChargeEffect,
}

struct EarnEffect {
    amount: i8,
    per: Option<Tag>,
}

struct Card {
    effect: Effect
}

已经尝试过以下方法:

Card { effect: Effect::EarnEffect { amount: 1, per: None }}

Card { effect: EarnEffect { amount: 1, per: None }}

【问题讨论】:

    标签: struct rust


    【解决方案1】:

    你的枚举变量和你的结构是两个独立的实体,即使你给了它们相同的名字。

    enum Effect {
        Passive,
        EarnEffect,
        ChargeEffect,
    }
    

    明确表示枚举可以有 3 个可能的值,没有额外的数据。您可以将数据与枚举变量相关联

    enum Effect {
        Passive,
        // Struct-like syntax
        EarnEffect {
          amount: i8,
          // ...
        },
        ChargeEffect,
    }
    

    enum Effect {
        Passive,
        // Tuple-like syntax
        EarnEffect(i8),
        ChargeEffect,
    }
    

    您需要使用枚举结构变体,或者将您的结构作为元组变体的数据。目前你有一些不匹配的东西。

    选项 1

    enum Effect {
        Passive,
        EarnEffect {
            amount: i8,
            per: Option<Tag>,
        },
        ChargeEffect,
    }
    
    struct Card {
        effect: Effect
    }
    

    Card { effect: Effect::EarnEffect { amount: 1, per: None }}
    

    选项 2

    enum Effect {
        Passive,
        EarnEffect(EarnEffect),
        ChargeEffect,
    }
    
    struct EarnEffect {
        amount: i8,
        per: Option<Tag>,
    }
    
    struct Card {
        effect: Effect
    }
    

    Card { effect: Effect::EarnEffect(EarnEffect { amount: 1, per: None }) }
    

    【讨论】:

      猜你喜欢
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-23
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      相关资源
      最近更新 更多