[英]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.