簡體   English   中英

具有相同值的多個枚舉變體?

[英]Multiple enum variants with same value?

使多個枚舉變體具有相同值的最佳方法是什么? 這是我想要的一個例子,除了Rust不喜歡它。

pub enum Nums {
    Num1            = 0,
    Num2            = 1,
    Num3            = 2,
    Num4            = 3,
    Num5            = 4,

    FirstNum        = 0,
    MiddleNum       = 2,
    LastNum         = 4,
}

enum變體不能與其他變體具有相同的標記值。 從Rust 1.20開始,您可以使用關聯的常量。 這讓你可以使用Nums::FIRST_NUM 等。

pub enum Nums {
    Num1 = 0,
    Num2 = 1,
    Num3 = 2,
    Num4 = 3,
    Num5 = 4,
}

impl Nums {
    pub const FIRST_NUM: Nums = Nums::Num1;
    pub const MIDDLE_NUM: Nums = Nums::Num3;
    pub const LAST_NUM: Nums = Nums::Num5;
}

在此之前,您將需要使用常量:

pub const FIRST_NUM: Nums = Nums::Num1;
pub const MIDDLE_NUM: Nums = Nums::Num3;
pub const LAST_NUM: Nums = Nums::Num5;

您還可以向enum添加方法:

pub enum Nums {
    Num1 = 0,
    Num2 = 1,
    Num3 = 2,
    Num4 = 3,
    Num5 = 4,
}

impl Nums {
    pub fn first()  -> Self { Nums::Num1 }
    pub fn middle() -> Self { Nums::Num3 }
    pub fn last()   -> Self { Nums::Num5 }
}

fn main() {
    println!("{}", Nums::first() as u8);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM